data class SomeClass(val one: String) : Named { init { println("XXX: creating $one") } override fun getName(): String { return one } } val belowCollection = project.objects.domainObjectContainer(SomeClass::class.java) { name -> SomeClass(name) } belowCollection.register("one") belowCollection.register("two") val aboveCollection = belowCollection.matching { someClass -> someClass.one == "one" || someClass.one == "three" } println("ZZZ: ${aboveCollection.names.joinToString()}") belowCollection.register("three") println("ZZZ: ${aboveCollection.names.joinToString()}") aboveCollection.all { println("XXX: $this") }