public void changeField(PrefabValues prefabValues, TypeTag enclosingType) {
        modify(() -> {
            Object newValue = prefabValues.giveOther(TypeTag.of(field, enclosingType), field.get(object));
            field.set(object, newValue);
        }, false);
    }
public void changeField ( PrefabValues prefabValues , TypeTag enclosingType ) { modify ( ( ) -> { Object newValue = prefabValues . giveOther ( TypeTag . of ( field , enclosingType ) , field . get ( object ) ) ; field . set ( object , newValue ) ; } , false ) ; }
Changes the field's value to something else. The new value will never be
null. Other than that, the precise value is undefined.

Ignores static fields and fields that can't be modified reflectively.

@param prefabValues If the field is of a type contained within
prefabValues, the new value will be taken from it.
@param enclosingType A tag for the type that contains the field. Needed
to determine a generic type, if it has one..
@throws ReflectionException If the operation fails.