@Override
    protected Map<String, Field> computeValue(Class<?> type) {
      Map<String, Field> result = new LinkedHashMap<>();
      for (Field field : type.getFields()) {
        String name = field.getName();
        if (name.indexOf('$') >= 0 || result.containsKey(name)) {
          continue;
        }

        int modifiers = field.getModifiers();
        if (!Modifier.isPublic(modifiers) || Modifier.isStatic(modifiers) ||
            Modifier.isTransient(modifiers) || field.isAnnotationPresent(Transient.class)) {
          continue;
        }

        field.setAccessible(true); // class might be non-public
        if (field.getDeclaringClass().isAnnotationPresent(Transient.class)) {
          continue;
        }
        result.put(name, field);
      }
      return result;
    }
@Override
    protected Map<String, Field> computeValue(Class<?> type)