List<InlayUpdateInfo> (@NotNull List<? extends Inlay<?>> editorHints) { myEditor.putUserData(HINT_REMOVAL_DELAYED, Boolean.FALSE); List<InlayUpdateInfo> updates = new ArrayList<>(); editorHints.forEach(editorHint -> { int offset = editorHint.getOffset(); ParameterHintsPass.HintData newHint = findAndRemoveMatchingHint(offset, editorHint.isRelatedToPrecedingText(), myNewHints); if (!myForceImmediateUpdate && delayRemoval(editorHint)) { myEditor.putUserData(HINT_REMOVAL_DELAYED, Boolean.TRUE); return; } String newText = newHint == null ? null : newHint.presentationText; if (isPreserveHint(editorHint, newText)) return; updates.add(new InlayUpdateInfo(offset, editorHint, newHint)); }); myNewHints.keySet().forEach(offset -> { for (ParameterHintsPass.HintData hint : myNewHints.get(offset)) { updates.add(new InlayUpdateInfo(offset, null, hint)); } }); updates.sort(Comparator.comparing(update -> update.offset)); return updates; }