
TreeFloor is a SortedSet( or SortedMap ) of TreeNode
          whose TreeNodeID.depth are the same.
TreeTrunk is a List of TreeFloors.

boolean TreeFloor.coversBarely( TimeBoundingBox WinTimeRange )
{
    return    TreeFloor.firstTimeBox().contains( WinTimeRange.earliest_time )
           && TreeFloor.lastTimeBox().contains( WinTimeRange.latest_time ); 
}

Define TreeFloor TreeTrunk.Prune( TimeBoundingBox WinTimeRange )
{
    for ( TreeFloor  = lowest_TreeFloor;
          TreeFloor <= top_TreeFloor;
          TreeFloor++ ) {
        if ( TreeFloor.coversBarely( WinTimeRange )
            return TreeFloor
        else {
            do {
                if ( TreeFloor.firstTimeBox()
                     .contains( WinTimeRange.earliest_time ) )
                    TreeFloor.remove( TreeFloor.first() );
                if ( TreeFloor.lastTimeBox()
                     .contains( WinTimeRange.latest_time ) )
                    TreeFloor.remove( TreeFloor.last() );
            } while ( ! TreeFloor.coversBarely( WinTimeRange ) )
        }
    }
    return null;   // if the code gets here, it means error
}

O, Assume the TreeTrunk's TreeRoot at depth Dmax, and the leafs are all at
   depth 0.  The TreeTrunk is initialized to a depth D_0, with all TreeNode
   being read from the disk into the TreeTrunk.

A, Zoom In: WinTimeRange is contracted.
   -- Prune all the TreeFloors from lowest_TreeFloor to top_TreeFloor
      till a TreeFloor which barely covers() WinTimeRange.
      i.e. calling TreeTrunk.Prune().
   -- grows from the lowest_TreeFloor to 1 more level downward.

B, Zoom Out: WinTimeRange is enlarged.
   -- if the lowest_TreeFloor covers() WinTimeRange, do nothing.
   -- if not, search from the lowest_TreeFloor to the top_TreeFloor for
      the TreeFloor that barely covers() WinTimeRange
   -- grows from that TreeFloor to 1 more level downward.
   -- remove all the TreeFloors under the last floor grown.

C, Scroll: WinTimeRange has same width but different ends.
   -- search from the lowest_TreeFloor to the top_TreeFloor for
      the first TreeFloor that totally covers() WinTimeRange.
   -- grows from that TreeFloor to 1 more level downward.
