private void doStart(CharSequence textAsCharSequence, char[] textAsArray, CharacterIterator characterIterator, int start, int end) {
    myTextAsCharSequence = textAsCharSequence;
    myTextAsArray = textAsArray;
    if (characterIterator == null) {
      myTrivialBreaker.setRange(start, end);
      myIterator = myTrivialBreaker;
    }
    else {
      myIterator = BreakIterator.getCharacterInstance(); // locale-dependent
      myIterator.setText(characterIterator);
    }
    myStart = myEnd = myIterator.first();
    assert myStart == start;
    myFontInfo = myNextFontInfo = null;
    advance();
  }
private void doStart(CharSequence textAsCharSequence, char[] textAsArray, CharacterIterator characterIterator, int start, int end)