code: public void scramble(PrefabValues prefabValues, TypeTag enclosingType) {
          for (Field field : FieldIterable.of(type)) {
              FieldAccessor accessor = new FieldAccessor(object, field);
              accessor.changeField(prefabValues, enclosingType);
          }
      }
docs: Modifies all fields of the wrapped object that are declared in T and in
  its superclasses.
  
  This method is consistent: given two equal objects; after scrambling
  both objects, they remain equal to each other.
  
  It cannot modifiy:
  1. static final fields, and
  2. final fields that are initialized to a compile-time constant in the
  field declaration.
  These fields will be left unmodified.
  
  @param prefabValues Prefabricated values to take values from.
  @param enclosingType Describes the type that contains this object as a
  field, to determine any generic parameters it may
  contain.