void (@NotNull SelectionPolicy pos, @NotNull Collection<?> elements) { if (checkDisposed()) return; if (isCloseByFocusLost() && Registry.is("focus.follows.mouse.workarounds")) { PointerInfo pointerInfo = MouseInfo.getPointerInfo(); if (pointerInfo != null) { myFocusPoint = pointerInfo.getLocation(); } } if (elements.isEmpty()) { myListModel.removeAll(); myTextField.setForeground(JBColor.red); hideList(); return; } Object[] oldElements = myListModel.getItems().toArray(); Object[] newElements = elements.toArray(); if (ArrayUtil.contains(null, newElements)) { LOG.error("Null after filtering elements by " + this); } List<ModelDiff.Cmd> commands = ModelDiff.createDiffCmds(myListModel, oldElements, newElements); myTextField.setForeground(UIUtil.getTextFieldForeground()); if (commands == null || commands.isEmpty()) { applySelection(pos); showList(); myTextFieldPanel.repositionHint(); } else { appendToModel(commands, pos); } }