class T::Types::TypeVariable

provides some syntax for the static type checker
Since we do type erasure at runtime, this just validates the variance and

def build_type

def build_type
  nil
end

def initialize(variance)

def initialize(variance)
  case variance
  when Hash then raise ArgumentError.new("Pass bounds using a block. Got: #{variance}")
  when *VALID_VARIANCES then nil
  else
    raise TypeError.new("invalid variance #{variance}")
  end
  @variance = variance
end

def name

def name
  Untyped.new.name
end

def subtype_of_single?(type)

def subtype_of_single?(type)
  true
end

def valid?(obj)

def valid?(obj)
  true
end