package me.eater.hefbrug.executor import me.eater.hefbrug.collector.AbstractCollector import me.eater.hefbrug.definition.DefinitionWildcard import me.eater.hefbrug.dsl.context.extension_util.FactoryRegister import me.eater.hefbrug.state.AbstractState class StateCollector(val context: ExecutionContext) { private val collectors = mutableMapOf>() @Suppress("UNCHECKED_CAST") suspend fun collect(definition: DefinitionWildcard): S { val collector = collectors.getOrPut( definition.key.group, { FactoryRegister[definition.key.group].createCollector(context) }) as AbstractCollector> return collector.collect(definition) } }