interface GroupedNode<T> : Node
abstract val groupBy: () -> T
data class Reference : GroupedNode<String>