@Nullable
  protected OccurenceInfo calcNextOccurrence(int delta) {
    Editor editor = getEditor();
    if (isDisposed() || editor == null) {
      return null;
    }

    return EditorHyperlinkSupport.getNextOccurrence(editor, delta, next -> {
      int offset = next.getStartOffset();
      scrollTo(offset);
      HyperlinkInfo hyperlinkInfo = EditorHyperlinkSupport.getHyperlinkInfo(next);
      if (hyperlinkInfo instanceof BrowserHyperlinkInfo) {
        return;
      }
      if (hyperlinkInfo instanceof HyperlinkInfoBase) {
        VisualPosition position = editor.offsetToVisualPosition(offset);
        Point point = editor.visualPositionToXY(new VisualPosition(position.getLine() + 1, position.getColumn()));
        ((HyperlinkInfoBase)hyperlinkInfo).navigate(myProject, new RelativePoint(editor.getContentComponent(), point));
      }
      else if (hyperlinkInfo != null) {
        hyperlinkInfo.navigate(myProject);
      }
    });
  }
@Nullable
  protected OccurenceInfo calcNextOccurrence(int delta)