// FIR_DUMP // WITH_REFLECT import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty1 class ProcessorWithParent : Entity { var processor by parent(ProcessorWithChildren::processors) } class ProcessorWithChildren : Entity { var processors by children(ProcessorWithParent::class.java, ProcessorWithParent::processor) } class Processor2WithParent : Entity { var processor: Processor2WithChildren? by parent(Processor2WithChildren::processors) } class Processor2WithChildren : Entity { var processors by children(Processor2WithParent::class.java, Processor2WithParent::processor) } class Processor3WithParent : Entity { var processor by parent(Processor3WithChildren::processors) } class Processor3WithChildren : Entity { var processors: MutableCollection by children(Processor3WithParent::class.java, Processor3WithParent::processor) } inline fun SP.parent( property: KProperty1> ): Delegate = null!! fun SC.children( clazz: Class, property: KProperty1, name: String = property.name ): Delegate> = null!! interface Delegate : ReadWriteProperty interface Entity