code: public void setValue(Object instance, Object newValue, ISMgr stateManager) throws IllegalAccessException {
  		if (typeDescriptor.isReloadable()) {
  			if (stateManager == null) {
  				// Look it up using reflection
  				stateManager = findInstanceStateManager(instance);
  			}
  			String declaringTypeName = typeDescriptor.getName();
  			Map<String, Object> typeLevelValues = stateManager.getMap().get(declaringTypeName);
  			if (typeLevelValues == null) {
  				// first time we've accessed this type for an instance field
  				typeLevelValues = new HashMap<String, Object>();
  				stateManager.getMap().put(declaringTypeName, typeLevelValues);
  			}
  			typeLevelValues.put(theField.getName(), newValue);
  		}
  		else { // the type is not reloadable, must use reflection to access the value
  			// TODO generate get/set in the topmost reloader for these kinds of field and use them?
  			if (typeDescriptor.isInterface()) {
  				// field resolution has left us with an interface field, those can't be set like this
  				throw new IncompatibleClassChangeError("Expected non-static field " + instance.getClass().getName()
  						+ "."
  						+ theField.getName());
  			}
  			else {
  				findAndSetFieldValueInHierarchy(instance, newValue);
  			}
  		}
  	}
docs: Set the value of an instance field on the specified instance to the specified value. If a state manager is passed
  in things can be done in a more optimal way, otherwise the state manager has to be discovered from the instance.
  
  @param instance the object instance upon which to set the field
  @param newValue the new value for that field
  @param stateManager the optional state manager for this instance, which will be looked up (expensive) if not
  passed in
  @throws IllegalAccessException if the field value cannot be set