code: protected Specification<ENTITY> buildStringSpecification(StringFilter filter, SingularAttribute<? super ENTITY,
          String> field) {
          if (filter.getEquals() != null) {
              return equalsSpecification(field, filter.getEquals());
          } else if (filter.getIn() != null) {
              return valueIn(field, filter.getIn());
          } else if (filter.getContains() != null) {
              return likeUpperSpecification(field, filter.getContains());
          } else if (filter.getSpecified() != null) {
              return byFieldSpecified(field, filter.getSpecified());
          }
          return null;
      }
docs: Helper function to return a specification for filtering on a {@link String} field, where equality, containment,
  and null/non-null conditions are supported.
  
  @param filter the individual attribute filter coming from the frontend.
  @param field  the JPA static metamodel representing the field.
  @return a Specification