inline fun <reified T : Any> getOrCreateExtension(name: String, noinline create: () -> T): T
fun <T : Any> getOrCreateExtension(name: String, clazz: KClass<T>, create: () -> T): T