package me.eater.hefbrug.dsl.context import me.eater.hefbrug.definition.DefinitionKey import me.eater.hefbrug.definition.DefinitionSkeleton import me.eater.hefbrug.dsl.annotation.HefbrugDSL import me.eater.hefbrug.state.AbstractState import me.eater.hefbrug.state.property.ProxyDelegate import kotlin.properties.ReadWriteProperty import kotlin.reflect.KMutableProperty0 @HefbrugDSL open class DefinitionContext(private val definition: DefinitionSkeleton>) : DefinitionContextSkeleton { protected fun proxy(reference: KMutableProperty0): ReadWriteProperty, T> = ProxyDelegate(reference) protected val state: S get() = definition.state override val after: MutableSet get() = definition.after override val before: MutableSet get() = definition.before override val require: MutableSet get() = definition.require }