private void processSimpleTypes(
     String prefix,
     TypeElement element,
     ExecutableElement source,
     TypeElementMembers members,
     Map<String, Object> fieldValues) {
   for (Map.Entry<String, ExecutableElement> entry : members.getPublicGetters().entrySet()) {
     String name = entry.getKey();
     ExecutableElement getter = entry.getValue();
     TypeMirror returnType = getter.getReturnType();
     ExecutableElement setter = members.getPublicSetter(name, returnType);
     VariableElement field = members.getFields().get(name);
     Element returnTypeElement = this.processingEnv.getTypeUtils().asElement(returnType);
     boolean isExcluded = this.typeExcludeFilter.isExcluded(returnType);
     boolean isNested = isNested(returnTypeElement, field, element);
     boolean isCollection = this.typeUtils.isCollectionOrMap(returnType);
     if (!isExcluded && !isNested && (setter != null || isCollection)) {
       String dataType = this.typeUtils.getType(returnType);
       String sourceType = this.typeUtils.getType(element);
       String description = this.typeUtils.getJavaDoc(field);
       Object defaultValue = fieldValues.get(name);
       boolean deprecated = isDeprecated(getter) || isDeprecated(setter) || isDeprecated(source);
       this.metadataCollector.add(
           ItemMetadata.newProperty(
               prefix,
               name,
               dataType,
               sourceType,
               null,
               description,
               defaultValue,
               (deprecated ? getItemDeprecation(getter) : null)));
     }
   }
 }
 private void processNestedTypes(
     String prefix, TypeElement element, ExecutableElement source, TypeElementMembers members) {
   for (Map.Entry<String, ExecutableElement> entry : members.getPublicGetters().entrySet()) {
     String name = entry.getKey();
     ExecutableElement getter = entry.getValue();
     VariableElement field = members.getFields().get(name);
     processNestedType(prefix, element, source, name, getter, field, getter.getReturnType());
   }
 }
 private void processNestedLombokTypes(
     String prefix, TypeElement element, ExecutableElement source, TypeElementMembers members) {
   for (Map.Entry<String, VariableElement> entry : members.getFields().entrySet()) {
     String name = entry.getKey();
     VariableElement field = entry.getValue();
     if (isLombokField(field, element)) {
       processNestedType(prefix, element, source, name, null, field, field.asType());
     }
   }
 }