public void retreat(int offset) {
    if (offset >= myElementStartOffset) return;
    if (offset >= myIterationState.getStartOffset()) {
      myElementStartOffset = offset;
      setCharElement();
    }
    else {
      myIterationState.retreat(offset);
      setElementOffsets();
    }
  }
public void retreat(int offset)