code: protected <C> List<Field> retrieveCachedFields(Class<C> clazz) {
          return fieldListMemoization.computeIfAbsent(clazz, key -> {
              Field[] fields = clazz.getDeclaredFields();
              List<Field> fieldList = new ArrayList<>(fields.length);
              for (Field field : fields) {
                  if (!Modifier.isStatic(field.getModifiers())) {
                      field.setAccessible(true);
                      fieldList.add(field);
                  }
              }
              return fieldList;
          });
      }
docs: This method is thread-safe.
  @param clazz never null
  @param <C> type
  @return never null