Object[] (@NotNull ReflectiveClass ownerClass, Predicate<? super PsiField> filter) { final Set<String> uniqueNames = new HashSet<>(); return Arrays.stream(ownerClass.getPsiClass().getAllFields()) .filter(field -> field != null && (field.getContainingClass() == ownerClass.getPsiClass() || !field.hasModifierProperty(PsiModifier.PRIVATE)) && uniqueNames.add(field.getName())) .filter(filter) .sorted(Comparator.comparing((PsiField field) -> isPublic(field) ? 0 : 1).thenComparing(PsiField::getName)) .map(field -> withPriority(JavaLookupElementBuilder.forField(field).withInsertHandler(this), isPublic(field))) .toArray(); }