code: @Override
      protected void handleTransliterate(Replaceable text,
                                         Position pos, boolean isIncremental) {
          int allStart = pos.start;
          int allLimit = pos.limit;
  
          ScriptRunIterator it =
              new ScriptRunIterator(text, pos.contextStart, pos.contextLimit);
  
          while (it.next()) {
              // Ignore runs in the ante context
              if (it.limit <= allStart) continue;
  
              // Try to instantiate transliterator from it.scriptCode to
              // our target or target/variant
              Transliterator t = getTransliterator(it.scriptCode);
  
              if (t == null) {
                  // We have no transliterator.  Do nothing, but keep
                  // pos.start up to date.
                  pos.start = it.limit;
                  continue;
              }
  
              // If the run end is before the transliteration limit, do
              // a non-incremental transliteration.  Otherwise do an
              // incremental one.
              boolean incremental = isIncremental && (it.limit >= allLimit);
  
              pos.start = Math.max(allStart, it.start);
              pos.limit = Math.min(allLimit, it.limit);
              int limit = pos.limit;
              t.filteredTransliterate(text, pos, incremental);
              int delta = pos.limit - limit;
              allLimit += delta;
              it.adjustLimit(delta);
  
              // We're done if we enter the post context
              if (it.limit >= allLimit) break;
          }
  
          // Restore limit.  pos.start is fine where the last transliterator
          // left it, or at the end of the last run.
          pos.limit = allLimit;
      }
docs: Implements {@link Transliterator#handleTransliterate}.