code: public void setValue(ReloadableType rtype, Object newValue, String name) throws IllegalAccessException {
  		if (GlobalConfiguration.isRuntimeLogging && log.isLoggable(Level.FINEST)) {
  			log.finest("Static field set: " + rtype.getName() + "." + name + " " + newValue);
  		}
  		// TODO can setValue for static fields ignore interfaces? since we know all those fields will be final - what about the clinit calls to setup the fields though?
  		FieldMember fieldmember = rtype.findStaticField(name);//InstanceField(name);
  
  		if (fieldmember == null) {
  			// If the field is null, there are two possible reasons:
  			// 1. The field does not exist in the hierarchy at all
  			// 2. The field is on a type just above our topmost reloadable type
  			FieldReaderWriter frw = rtype.locateField(name);
  			if (frw == null) {
  				// bad code redeployed?
  				log.info("Unexpectedly unable to locate static field " + name + " starting from type "
  						+ rtype.dottedtypename
  						+ ": clinit running late?");
  				return;
  			}
  			frw.setStaticFieldValue(rtype.getClazz(), newValue, this);
  		}
  		else {
  			if (!fieldmember.isStatic()) {
  				throw new IncompatibleClassChangeError("Expected static field " + rtype.dottedtypename + "."
  						+ fieldmember.getName());
  			}
  			Map<String, Object> typeValues = values.get(fieldmember.getDeclaringTypeName());//rtype.getName());
  			if (typeValues == null) {
  				typeValues = new HashMap<String, Object>();
  				values.put(fieldmember.getDeclaringTypeName(), typeValues);
  			}
  			typeValues.put(name, newValue);
  		}
  	}
docs: TODO ensure can't set field values on interfaces (constants)? (guess we should never encounter the code that tries it)