Field (@NotNull String name) { if (getFeatures().isEmpty()) { return null; } Optional<Field> byExactName = getFeatures().stream() .filter(f -> !f.isByPattern() && name.equals(f.getName())) .findAny(); return byExactName.orElse( ContainerUtil.find(getFeatures(), f -> f.isByPattern() && f.acceptsFieldName(name)) ); }