code: private void leftAddWithPredecessor(
                                         GBSNode           p,
                                         GBSNode           r,
                                         Object            new1,
                                         NodeInsertPoint   ip,
                                         InsertNodes       point)
      {
          java.util.Comparator comp = r.insertComparator();
          int xcc = comp.compare(new1, r.rightMostKey());
          if (xcc > 0)                   /* If key exists it is in left part      */
          {
              /*  of current node                      */
              p.findInsertPointInLeft(new1, ip);
              point.setInsert(p, ip);
          }
          else                           /* If key exists it is in right part     */
          {
              /*  of predecessor node                  */
              r.findInsertPointInRight(new1, ip);
              if (ip.isDuplicate())      /* Key is a duplicate                    */
                  point.setInsert(r, ip);
              else                       /* Key is not a duplicate                */
              {
                  point.setInsertAndPosition(
                                            p,
                                            -1,
                                            r,
                                            ip.insertPoint());
                  point.setRight();
              }
  
          }
  
      }
docs: Add to left side with an upper predecessor present.
  
  <p>There is an upper predecessor.  If the current key is greater
  than the right-most key of the upper predecessor then the insert
  point is in the left half of the current node.</p>
  <p>Otherwise it is in the right part of the upper predecessor.  If
  it is not a duplicate of some key in the upper predecessor we
  insert the new key in the upper predecessor and migrate down the
  right-most key in the upper predecessor.</p>
  
  @param p Current node from which we tried to move left
  @param r Last node from which we actually moved right (logical predecessor)
  @param new1 Key being inserted
  @param ip Scratch NodeInsertPoint to avoid allocating a new one
  @param point Returned insert points