code: RBBINode cloneTree() {
          RBBINode n;
  
          if (fType == RBBINode.varRef) {
              // If the current node is a variable reference, skip over it
              //   and clone the definition of the variable instead.
              n = fLeftChild.cloneTree();
          } else if (fType == RBBINode.uset) {
              n = this;
          } else {
              n = new RBBINode(this);
              if (fLeftChild != null) {
                  n.fLeftChild = fLeftChild.cloneTree();
                  n.fLeftChild.fParent = n;
              }
              if (fRightChild != null) {
                  n.fRightChild = fRightChild.cloneTree();
                  n.fRightChild.fParent = n;
              }
          }
          return n;
      }
docs: -------------------------------------------------------------------------