code: public FieldInfoList getFieldInfo() {
          if (!scanResult.scanSpec.enableFieldInfo) {
              throw new IllegalArgumentException("Please call ClassGraph#enableFieldInfo() before #scan()");
          }
          // Implement field overriding
          final FieldInfoList fieldInfoList = new FieldInfoList();
          final Set<String> fieldNameSet = new HashSet<>();
          for (final ClassInfo ci : getOverrideOrder()) {
              for (final FieldInfo fi : ci.getDeclaredFieldInfo()) {
                  // If field has not been overridden by field of same name 
                  if (fieldNameSet.add(fi.getName())) {
                      // Add field to output order
                      fieldInfoList.add(fi);
                  }
              }
          }
          return fieldInfoList;
      }
docs: Returns information on all visible fields declared by this class, or by its superclasses. See also:
  
  <ul>
  <li>{@link #getFieldInfo(String)}
  <li>{@link #getDeclaredFieldInfo(String)}
  <li>{@link #getDeclaredFieldInfo()}
  </ul>
  
  <p>
  Requires that {@link ClassGraph#enableFieldInfo()} be called before scanning, otherwise throws
  {@link IllegalArgumentException}.
  
  <p>
  By default only returns information for public methods, unless {@link ClassGraph#ignoreFieldVisibility()} was
  called before the scan.
  
  @return the list of FieldInfo objects for visible fields of this class or its superclases, or the empty list
  if no fields were found or visible.
  @throws IllegalArgumentException
  if {@link ClassGraph#enableFieldInfo()} was not called prior to initiating the scan.