void (boolean select, final @NotNull LogicalPosition pos) { int offset = myEditor.logicalPositionToOffset(pos); final SyntaxHighlighter highlighter = myPage.getHighlighter(); String type; HighlightData highlightData = getDataFromOffset(offset); if (highlightData != null) { // tag-based navigation first type = RainbowHighlighter.isRainbowTempKey(highlightData.getHighlightKey()) ? RainbowHighlighter.RAINBOW_TYPE : highlightData.getAdditionalColorKey() == null ? highlightData.getHighlightType() : highlightData.getAdditionalColorKey().getExternalName(); } else { // if failed, try the highlighter-based navigation type = selectItem(myEditor.getHighlighter().createIterator(offset), highlighter); } setCursor(type != null); if (select && type != null) { myDispatcher.getMulticaster().selectionInPreviewChanged(type); } }