class HibernateSearchService {

    List<String> getNamesOfAnnotatedStringFields(Class<?> entityType) {
        if(classIndexedFieldMap.containsKey(entityType)) {
            return classIndexedFieldMap.get(entityType);
        }

        var indexedStringFields = Arrays.stream(entityType.getDeclaredFields())
                .filter(field -> String.class.equals(field.getType()) && Objects.nonNull(field.getAnnotation(Field.class)))
                .map(field -> {
                    var fieldAnnotation = field.getAnnotation(Field.class);

                    if(!fieldAnnotation.name().isEmpty()) {
                        return fieldAnnotation.name();
                    }

                    return field.getName();
                })
                .collect(Collectors.toList());
        classIndexedFieldMap.put(entityType, indexedStringFields);

        return indexedStringFields;
    }

    public  HibernateSearchService(@NotNull Collection<String> statusWithLobConstraint, @NotNull Collection<String> excludedStatus);

}