code: private FieldDoc getFieldDoc(final ClassDoc classDoc, final String argumentFieldName) {
          for (final FieldDoc fieldDoc : classDoc.fields(false)) {
              if (fieldDoc.name().equals(argumentFieldName)) {
                  return fieldDoc;
              }
  
              // This can return null, specifically, we can encounter https://bugs.openjdk.java.net/browse/JDK-8033735,
              // which is fixed in JDK9 http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/ba8c351b7096.
              final Field field = DocletUtils.getFieldForFieldDoc(fieldDoc);
              if (field == null) {
                  logger.warn(
                      String.format(
                          "Could not access the field definition for %s while searching for %s, presumably because the field is inaccessible",
                          fieldDoc.name(),
                              argumentFieldName)
                  );
              } else if (field.isAnnotationPresent(ArgumentCollection.class)) {
                  final ClassDoc typeDoc = getDoclet().getRootDoc().classNamed(fieldDoc.type().qualifiedTypeName());
                  if (typeDoc == null) {
                      throw new DocException("Tried to get javadocs for ArgumentCollection field " +
                              fieldDoc + " but couldn't find the class in the RootDoc");
                  } else {
                      FieldDoc result = getFieldDoc(typeDoc, argumentFieldName);
                      if (result != null) {
                          return result;
                      }
                      // else keep searching
                  }
              }
          }
  
          // if we didn't find it here, wander up to the superclass to find the field
          if (classDoc.superclass() != null) {
              return getFieldDoc(classDoc.superclass(), argumentFieldName);
          }
  
          return null;
      }
docs: Recursive helper routine to getFieldDoc()