code: public Map<String, Reflect> fields() {
          Map<String, Reflect> result = new LinkedHashMap<String, Reflect>();
          Class<?> t = type();
  
          do {
              for (Field field : t.getDeclaredFields()) {
                  if (type != object ^ Modifier.isStatic(field.getModifiers())) {
                      String name = field.getName();
  
                      if (!result.containsKey(name))
                          result.put(name, field(name));
                  }
              }
  
              t = t.getSuperclass();
          }
          while (t != null);
  
          return result;
      }
docs: Get a Map containing field names and wrapped values for the fields'
  values.
  <p>
  If the wrapped object is a {@link Class}, then this will return static
  fields. If the wrapped object is any other {@link Object}, then this will
  return instance fields.
  <p>
  These two calls are equivalent <code><pre>
  on(object).field("myField");
  on(object).fields().get("myField");
  </pre></code>
  
  @return A map containing field names and wrapped values.