code: private boolean previousSegment() {
          assert(state == State.ITER_CHECK_BWD);
          // The input text [(iter index)..limit[ passes the FCD check.
          pos = iter.getIndex();
          // Collect the characters being checked, in case they need to be normalized.
          if(s == null) {
              s = new StringBuilder();
          } else {
              s.setLength(0);
          }
          int nextCC = 0;
          for(;;) {
              // Fetch the previous character and its fcd16 value.
              int c = iter.previousCodePoint();
              if(c < 0) { break; }
              int fcd16 = nfcImpl.getFCD16(c);
              int trailCC = fcd16 & 0xff;
              if(trailCC == 0 && s.length() != 0) {
                  // FCD boundary after this character.
                  iter.nextCodePoint();
                  break;
              }
              s.appendCodePoint(c);
              if(trailCC != 0 && ((nextCC != 0 && trailCC > nextCC) ||
                                  CollationFCD.isFCD16OfTibetanCompositeVowel(fcd16))) {
                  // Fails FCD check. Find the previous FCD boundary and normalize.
                  while(fcd16 > 0xff) {
                      c = iter.previousCodePoint();
                      if(c < 0) { break; }
                      fcd16 = nfcImpl.getFCD16(c);
                      if(fcd16 == 0) {
                          iter.nextCodePoint();
                          break;
                      }
                      s.appendCodePoint(c);
                  }
                  s.reverse();
                  normalize(s);
                  limit = pos;
                  start = pos - s.length();
                  state = State.IN_NORM_ITER_AT_START;
                  pos = normalized.length();
                  return true;
              }
              nextCC = fcd16 >> 8;
              if(nextCC == 0) {
                  // FCD boundary before the following character.
                  break;
              }
          }
          start = pos - s.length();
          assert(pos != start);
          iter.moveIndex(s.length());
          state = State.ITER_IN_FCD_SEGMENT;
          return true;
      }
docs: Extends the FCD text segment backward or normalizes around pos.
  @return true if success