private void updateVisualLineInfo() {
    myVisualLineStart = myEditor.visualPositionToOffset(new VisualPosition(myVisibleCaret.line, 0));
    myVisualLineEnd = myEditor.visualPositionToOffset(new VisualPosition(myVisibleCaret.line + 1, 0));

    int[] yRange = myEditor.visualLineToYRange(myVisibleCaret.line);

    int logicalLineStartY;
    if (myEditor.getSoftWrapModel().getSoftWrap(myVisualLineStart) == null) {
      logicalLineStartY = yRange[0];
    }
    else {
      int startVisualLine = myEditor.myView.offsetToVisualLine(EditorUtil.getNotFoldedLineStartOffset(myEditor, getOffset()), false);
      logicalLineStartY = myEditor.visualLineToY(startVisualLine);
    }

    int logicalLineEndY;
    if (myEditor.getSoftWrapModel().getSoftWrap(myVisualLineEnd) == null) {
      logicalLineEndY = yRange[1];
    }
    else {
      int endVisualLine = myEditor.myView.offsetToVisualLine(EditorUtil.getNotFoldedLineEndOffset(myEditor, getOffset()), true);
      logicalLineEndY = myEditor.visualLineToY(endVisualLine) + myEditor.getLineHeight();
    }

    myVerticalInfo = new VerticalInfo(yRange[0], logicalLineStartY, logicalLineEndY - logicalLineStartY);
  }
private void updateVisualLineInfo()