abstract class Witness
val type: Type
abstract fun compile(fd: FrameDescriptor): Code
fun match(expectedType: Type): Witness