docs: private void balance32(
      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 = 32,     2k-1 = 63,     k-1 = 31
  
   [A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-0-1-2-3-4]    [31 children]
  
                         becomes:
  
  
                      *-----------------P-----------------*
                      |                                   |
             *--------H--------*                 *--------X--------*
             |                 |                 |                 |
         *---D---*         *---L---*         *---T---*         *---1---*
         |       |         |       |         |       |         |       |
       *-B-*   *-F-*     *-J-*   *-N-*     *-R-*   *-V-*     *-Z-*   *-3-*
       |   |   |   |     |   |   |   |     |   |   |   |     |   |   |   |
       A   C   E   G     I   K   M   O     Q   S   U   W     Y   0   2   4
  
  
     ---------------------------------------------------------------------
  
  
  
                      *-----------------P-----------------*
                      |                                   |
             *--------H--------*                 *--------X--------*
             |                 |                 |                 |
         *---D---*         *---L---*         *---T---*         *---1---*
         |       |         |       |         |       |         |       |
       *-B-*   *-F-*     *-J-*   *-N-*     *-R-*   *-V-*     *-Z-*   *-3-*                   [33 children]
       |   |   |   |     |   |   |   |     |   |   |   |     |   |   |   |
       A   C   E   G     I   K   M   O     Q   S   U   W     Y   0   2   4 - A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-
                                                                             P-Q-R-S-T-U-V-W-X-Y-Z-0-1-2-3-4-5
  
  
                         becomes:
  
  
                                *-------------------------------A-------------------------------*
                                |                                                               |
                *---------------P---------------*                               *---------------Q---------------*
                |                               |                               |                               |
        *-------H-------*               *-------X-------*               *-------I-------*               *-------Y-------*
        |               |               |               |               |               |               |               |
    *---D---*       *---L---*       *---T---*       *---1---*       *---E---*       *---M---*       *---U---*       *---2---*
    |       |       |       |       |       |       |       |       |       |       |       |       |       |       |       |
  *-B-*   *-F-*   *-J-*   *-N-*   *-R-*   *-V-*   *-Z-*   *-3-*   *-C-*   *-G-*   *-K-*   *-O-*   *-S-*   *-W-*   *-0-*   *-4-*
  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
  A   C   E   G   I   K   M   O   Q   S   U   W   Y   0   2   4   B   D   F   H   J   L   N   P   R   T   V   X   Z   1   3   5
  
  
  
  
  
  ---------------A-------------------------------*
                                                 |
                                 *---------------Q---------------*
                                 |                               |
  -------*               *-------I-------*               *-------Y-------*
         |               |               |               |               |
     *---1---*       *---E---*       *---M---*       *---U---*       *---2---*
     |       |       |       |       |       |       |       |       |       |
   *-Z-*   *-3-*   *-C-*   *-G-*   *-K-*   *-O-*   *-S-*   *-W-*   *-0-*   *-4-*
   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   Y   0   2   4   B   D   F   H   J   L   N   P   R   T   V   X   Z   1   3   5
  
  
  
  
  
                 *---------------A---------------*
                 |                               |
         *-------P-------*               *-------Q-------*
         |               |               |               |
     *---H---*       *---X---*       *---I---*       *---Y---*
     |       |       |       |       |       |       |       |
   *-D-*   *-L-*   *-T-*   *-1-*   *-E-*   *-M-*   *-U-*   *-2-*
   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
  *B* *F* *J* *N* *R* *V* *Z* *3* *C* *G* *K* *O* *S* *W* *0* *4*
  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
  A C E G I K M O Q S U W Y 0 2 4 B D F H J L N P R T V X Z 1 3 5
  
                                                                                */
  
      if (maxBal == 31)
        {
          GBSNode b = fpoint.rightChild();
          GBSNode c = b.rightChild();
          GBSNode d = c.rightChild();
          GBSNode e = d.rightChild();
          GBSNode f = e.rightChild();
          GBSNode g = f.rightChild();
          GBSNode h = g.rightChild();
          GBSNode i = h.rightChild();
          GBSNode j = i.rightChild();
          GBSNode k = j.rightChild();
          GBSNode l = k.rightChild();
          GBSNode m = l.rightChild();
          GBSNode n = m.rightChild();
          GBSNode o = n.rightChild();
          GBSNode p = o.rightChild();
          GBSNode q = p.rightChild();
          GBSNode r = q.rightChild();
          GBSNode s = r.rightChild();
          GBSNode t = s.rightChild();
          GBSNode u = t.rightChild();
          GBSNode v = u.rightChild();
          GBSNode w = v.rightChild();
          GBSNode x = w.rightChild();
          GBSNode y = x.rightChild();
          GBSNode z = y.rightChild();
          GBSNode p0 = z.rightChild();
          GBSNode p1 = p0.rightChild();
          GBSNode p2 = p1.rightChild();
          GBSNode p3 = p2.rightChild();
          GBSNode p4 = p3.rightChild();
          p.setLeftChild(h);
          p.setRightChild(x);
          h.setLeftChild(d);
          h.setRightChild(l);
          d.setLeftChild(b);
          d.setRightChild(f);
          b.setLeftChild(fpoint);
          b.setRightChild(c);
          fpoint.clearRightChild();
          c.clearRightChild();
          f.setLeftChild(e);
          f.setRightChild(g);
          e.clearRightChild();
          g.clearRightChild();
          l.setLeftChild(j);
          l.setRightChild(n);
          j.setLeftChild(i);
          j.setRightChild(k);
          i.clearRightChild();
          k.clearRightChild();
          n.setLeftChild(m);
          n.setRightChild(o);
          m.clearRightChild();
          o.clearRightChild();
          x.setLeftChild(t);
          x.setRightChild(p1);
          t.setLeftChild(r);
          t.setRightChild(v);
          r.setLeftChild(q);
          r.setRightChild(s);
          q.clearRightChild();
          s.clearRightChild();
          v.setLeftChild(u);
          v.setRightChild(w);
          u.clearRightChild();
          w.clearRightChild();
          p1.setLeftChild(z);
          p1.setRightChild(p3);
          z.setLeftChild(y);
          z.setRightChild(p0);
          y.clearRightChild();
          p0.clearRightChild();
          p3.setLeftChild(p2);
          p3.setRightChild(p4);
          p2.clearRightChild();
          if (bparent.rightChild() == fpoint)
            bparent.setRightChild(p);
          else
            bparent.setLeftChild(p);
        }
      else
        {
          if (maxBal != 33)
            error("fringeBalance32: maxBal != 33, maxBal = " + maxBal);
          GBSNode t0_top = stack.node(fpidx-5);
          GBSNode xp1 = stack.node(fpidx-4);
          GBSNode a = fpoint.rightChild();
          GBSNode b = a.rightChild();
          GBSNode c = b.rightChild();
          GBSNode d = c.rightChild();
          GBSNode e = d.rightChild();
          GBSNode f = e.rightChild();
          GBSNode g = f.rightChild();
          GBSNode h = g.rightChild();
          GBSNode i = h.rightChild();
          GBSNode j = i.rightChild();
          GBSNode k = j.rightChild();
          GBSNode l = k.rightChild();
          GBSNode m = l.rightChild();
          GBSNode n = m.rightChild();
          GBSNode o = n.rightChild();
          GBSNode p = o.rightChild();
          GBSNode q = p.rightChild();
          GBSNode r = q.rightChild();
          GBSNode s = r.rightChild();
          GBSNode t = s.rightChild();
          GBSNode u = t.rightChild();
          GBSNode v = u.rightChild();
          GBSNode w = v.rightChild();
          GBSNode x = w.rightChild();
          GBSNode y = x.rightChild();
          GBSNode z = y.rightChild();
          GBSNode p0 = z.rightChild();
          GBSNode p1 = p0.rightChild();
          GBSNode p2 = p1.rightChild();
          GBSNode p3 = p2.rightChild();
          GBSNode p4 = p3.rightChild();
          GBSNode p5 = p4.rightChild();
          a.setChildren(xp1, q);
  
          q.setChildren(i, y);
  
          i.setChildren(e, m);
  
          e.setChildren(c, g);
  
          c.setChildren(b, d);
  
          b.clearRightChild();
          d.clearRightChild();
          g.setChildren(f, h);
  
          f.clearRightChild();
          h.clearRightChild();
          m.setChildren(k, o);
  
          k.setChildren(j, l);
  
          j.clearRightChild();
          l.clearRightChild();
          o.setChildren(n, p);
  
          n.clearRightChild();
          p.clearRightChild();
          y.setChildren(u, p2);
  
          u.setChildren(s, w);
  
          s.setChildren(r, t);
  
          r.clearRightChild();
          t.clearRightChild();
          w.setChildren(v, x);
  
          v.clearRightChild();
          x.clearRightChild();
          p2.setChildren(p0, p4);
  
          p0.setChildren(z, p1);
  
          z.clearRightChild();
          p1.clearRightChild();
          p4.setChildren(p3, p5);
  
          p3.clearRightChild();
          fpoint.clearRightChild();
          if (t0_top.rightChild() == xp1)
            t0_top.setRightChild(a);
          else
            t0_top.setLeftChild(a);
          if ((fpidx > 5) && (stack.balancePointIndex() > -1))
            {
              GBSNode qpoint = a;
              stack.setNode(fpidx-4, qpoint);
              GBSInsertHeight.singleInstance().balance(stack, qpoint);
            }
        }
    }