class Contracts::IsA

def self.[](val)

def self.[](val)
  @lookup ||= {}
  @lookup[val] ||= new(val)
end

def initialize(val)

def initialize(val)
  @val = val
end

def valid?(val)

def valid?(val)
  val.is_a? @val.constantize
end