docs: private void balance2(
      NodeStack     stack,
      GBSNode       bparent,         /* Parent of fringe balance point        */
      GBSNode       fpoint,          /* Fringe balance point                  */
      int           fpidx,           /* Index within stack of fpoint          */
      int           maxBal)          /* Maximum allowed fringe imbalance      */
    {
          /*
                k = 2,    2k-1 = 5,    k-1 = 1
  
                            [A-B-C]                     [3 children]
  
                            becomes:
  
                          *----B----*
                          |         |
                          A         C
  
               -------------------------------
  
                          *----B----*
                          |         |
                          A         C - D - E           [3 children]
  
  
                            becomes:
  
                          *----B----*
                          |         |
                          A      *--D--*
                                 |     |
                                 C     E
                                                                        */
  
  
      GBSNode a = fpoint;
      GBSNode b = a.rightChild();
      if (bparent.rightChild() == a)
        bparent.setRightChild(b);
      else
        bparent.setLeftChild(b);
      b.setLeftChild(a);
      a.clearRightChild();
      if ((fpidx > 1) && (stack.balancePointIndex() > -1))
        {
          GBSNode qpoint = b;
          stack.setNode(fpidx, qpoint);
          GBSInsertHeight.singleInstance().balance(stack, qpoint);
        }
    }