trait PriorityTree { type Node <: BasicTreeNode; val top = initTree; top.next = (initTree); top.next.prev = (top); def initTree : Node; trait BasicTreeNode { private[PriorityTree] var next : Node = _; private[PriorityTree] var prev : Node = _; private[PriorityTree] var chld : Node = _; //var next : Node = _; //var prev : Node = _; //var chld : Node = _; } }