docs: public static List<Field> findFields(final Class<?> clazz) {
          List<Field> foundFields = new ArrayList<>();
          Class<?> searchType = clazz;
          while (!Object.class.equals(searchType) && (searchType != null)) {
              Field[] fields = searchType.getDeclaredFields();
              for (Field field : fields) {
                  field.setAccessible(true);
                  foundFields.add(field);
              }
              searchType = searchType.getSuperclass();
          }
          return foundFields;
      }