@Value.Derived
    @Value.Auxiliary
    public boolean isJavaBean() {
      return element().getKind().isClass()
          && element().getKind() != ElementKind.ENUM
          && !element().getModifiers().contains(Modifier.PRIVATE)
          && !element().getModifiers().contains(Modifier.ABSTRACT)
          &&
          // restrict to Criteria and Repository annotations for now
          (CriteriaMirror.find(element()).isPresent() || CriteriaRepositoryMirror.find(element()).isPresent());
    }
Checks if this element is a regular POJO (not an interface or abstract class) simple
class with getters and setters
value-processor/src/org/immutables/value/processor/meta/Proto.java