///|
pub typealias Tree as T

///|
enum Tree[T] {
  Empty
  Node(left~ : Tree[T], right~ : Tree[T], size~ : Int, min~ : T, max~ : T)
}