code: NodeBuilder ascendToRoot()
      {
          NodeBuilder current = this;
          while (!current.isRoot())
              current = current.ascend();
          return current;
      }
docs: where we work only on the newest child node, which may construct many spill-over parents as it goes