private void popUntilTopBlockStartOffsetGreaterOrEqual(final int lineStartOffset) {
    while (!myStack.isEmpty()) {
      checkCancelled();
      Block current = myStack.peek();
      TextRange range = current.getTextRange();
      if (range.getStartOffset() < lineStartOffset) {
        myStack.pop();
        if (range.getEndOffset() > lineStartOffset) {
          pushAll(current);
        }
      }
      else {
        break;
      }
    }
  }
private void popUntilTopBlockStartOffsetGreaterOrEqual(final int lineStartOffset)