code: public void processAnnotations(DescriptorPolicy descriptorPolicy) {
          processEntityAnnotations(descriptorPolicy);
          declaredGenuineVariableDescriptorMap = new LinkedHashMap<>();
          declaredShadowVariableDescriptorMap = new LinkedHashMap<>();
          declaredPinEntityFilterList = new ArrayList<>(2);
          // Only iterate declared fields and methods, not inherited members, to avoid registering the same one twice
          List<Member> memberList = ConfigUtils.getDeclaredMembers(entityClass);
          for (Member member : memberList) {
              processValueRangeProviderAnnotation(descriptorPolicy, member);
              processPlanningVariableAnnotation(descriptorPolicy, member);
              processPlanningPinAnnotation(descriptorPolicy, member);
          }
          if (declaredGenuineVariableDescriptorMap.isEmpty() && declaredShadowVariableDescriptorMap.isEmpty()) {
              throw new IllegalStateException("The entityClass (" + entityClass
                      + ") should have at least 1 getter method or 1 field with a "
                      + PlanningVariable.class.getSimpleName() + " annotation or a shadow variable annotation.");
          }
          processVariableAnnotations(descriptorPolicy);
      }
docs: ************************************************************************