package me.eater.hefbrug.enforcer import me.eater.hefbrug.executor.ExecutionContext import me.eater.hefbrug.state.AbstractState import kotlin.reflect.KProperty abstract class AbstractEnforcer(val context: ExecutionContext) { operator fun Set.contains(property: KProperty<*>): Boolean { return property.name in this } abstract suspend fun enforce(currentState: S, desiredState: S, changeSet: Set) }