code: public static int nextTrail32(CharacterIterator ci, int lead) {
          if (lead == CharacterIterator.DONE && ci.getIndex() >= ci.getEndIndex()) {
              return DONE32;
          }
          int retVal = lead;
          if (lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
              char  cTrail = ci.next();
              if (UTF16.isTrailSurrogate(cTrail)) {
                  retVal = ((lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
                              (cTrail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
                              UTF16.SUPPLEMENTARY_MIN_VALUE;
              } else {
                  ci.previous();
              }
          }
          return retVal;
      }
docs: adjustment.