private void paintVirtualSelectionIfNecessary(int visualLine, int columnStart, float xStart, int y) {
      IntPair selectionRange = myVirtualSelectionMap.get(visualLine);
      if (selectionRange == null || selectionRange.second <= columnStart) return;
      float startX = selectionRange.first <= columnStart
                     ? xStart
                     : (float)myView.visualPositionToXY(new VisualPosition(visualLine, selectionRange.first)).getX();
      float endX = (float)Math.min(myClip.x + myClip.width,
                                   myView.visualPositionToXY(new VisualPosition(visualLine, selectionRange.second)).getX());
      paintBackground(myEditor.getColorsScheme().getColor(EditorColors.SELECTION_BACKGROUND_COLOR), startX, y, endX - startX);
    }
private void paintVirtualSelectionIfNecessary(int visualLine, int columnStart, float xStart, int y)