@NotNull
  public static List<Field> collectFields(@NotNull Class<?> clazz) {
    List<Field> result = new ArrayList<>();
    collectFields(clazz, result);
    return result;
  }
@NotNull
  public static List<Field> collectFields(@NotNull Class<?> clazz)