int (Editor editor, Object2IntMap<Editor> memoMap) { return memoMap.computeIntIfAbsent(editor, e -> { Rectangle visibleArea = e.getScrollingModel().getVisibleAreaOnScrollingFinished(); if (editor.isDisposed() || visibleArea.height <= 0) { return e.getCaretModel().getOffset(); } else { int y = visibleArea.y + visibleArea.height / 2; int visualLine = e.yToVisualLine(y); return e.visualPositionToOffset(new VisualPosition(visualLine, 0)); } }); }