code: private void categories(Set<? extends Element> elements) throws IllegalAccessException {
          if (CollectionUtils.isNotEmpty(elements)) {
              for (Element element : elements) {
                  TypeElement enclosingElement = (TypeElement) element.getEnclosingElement();
  
                  if (element.getModifiers().contains(Modifier.PRIVATE)) {
                      throw new IllegalAccessException("The inject fields CAN NOT BE 'private'!!! please check field ["
                              + element.getSimpleName() + "] in class [" + enclosingElement.getQualifiedName() + "]");
                  }
  
                  if (parentAndChild.containsKey(enclosingElement)) { // Has categries
                      parentAndChild.get(enclosingElement).add(element);
                  } else {
                      List<Element> childs = new ArrayList<>();
                      childs.add(element);
                      parentAndChild.put(enclosingElement, childs);
                  }
              }
  
              logger.info("categories finished.");
          }
      }
docs: Categories field, find his papa.
  
  @param elements Field need autowired