raulraja
fun <T : Typeclass> instance(t: Type): T { if (GlobalInstances.containsKey(t)) return GlobalInstances.getValue(t) as T else throw TypeClassInstanceNotFound(t) }