// FIR_IDENTICAL sealed class Tree { abstract val value: TCommon abstract val children: Map> data class Inner( override val value: TCommon, val innerValue: TInner, override val children: Map> ) : Tree() data class Leaf( override val value: TCommon, val leafValue: TLeaf ) : Tree() { override val children: Map> get() = emptyMap() } } val tree = Tree.Inner( "root", Unit, mapOf( 1 to Tree.Leaf("1", 1), 2 to Tree.Inner( "2", Unit, mapOf( 1 to Tree.Leaf("21", 2), 2 to Tree.Inner( "22", Unit, mapOf(1 to Tree.Leaf("221", 3)) ), 3 to Tree.Leaf("23", 4) ) ) ) )