int (Object @NotNull [] modelElements, @NotNull String trimmedText) { if (myModel instanceof Comparator) { return 0; } Matcher matcher = buildPatternMatcher(transformPattern(trimmedText)); final String statContext = statisticsContext(); Comparator<Object> itemComparator = Comparator. comparing(e -> trimmedText.equalsIgnoreCase(myModel.getElementName(e))). thenComparing(e -> matchingDegree(matcher, e)). thenComparing(e -> getUseCount(statContext, e)). reversed(); int bestPosition = 0; while (bestPosition < modelElements.length - 1 && isSpecialElement(modelElements[bestPosition])) bestPosition++; for (int i = 1; i < modelElements.length; i++) { final Object modelElement = modelElements[i]; if (isSpecialElement(modelElement)) continue; if (itemComparator.compare(modelElement, modelElements[bestPosition]) < 0) { bestPosition = i; } } return bestPosition; }