def subtype(super_type, constraints = nil, name = nil, metadata = nil, &bl)
      super_type  = type(super_type)
      constraints = constraints(constraints, &bl)
      name        = name(name)
      meta        = metadata(metadata)

      SubType.new(super_type, constraints, name, metadata)
    end
def subtype(super_type, constraints = nil, name = nil, metadata = nil, &bl)
      super_type  = type(super_type)
      constraints = constraints(constraints, &bl)
      name        = name(name)
      meta        = metadata(metadata)

      SubType.new(super_type, constraints, name, metadata)
    end
Sub and union