docs: public static List<Field> findMatchedFields(Class targetClass, Class ann) {
  
          List<Field> ret = new ArrayList<Field>();
          if (targetClass == null) {
              return ret;
          }
          
          // Keep backing up the inheritance hierarchy.
          do {
              // Copy each field declared on this class unless it's static or
              // file.
              Field[] fields = targetClass.getDeclaredFields();
              for (int i = 0; i < fields.length; i++) {
                  if (ann == null) {
                      ret.add(fields[i]);
                      continue;
                  }
                  Annotation protobuf = fields[i].getAnnotation(ann);
                  if (protobuf != null) {
                      ret.add(fields[i]);
                  }
              }
              targetClass = targetClass.getSuperclass();
          } while (targetClass != null && targetClass != Object.class);
  
          return ret;
      }