code: @UsedByGeneratedCode
  	public int changed(int methodId) {
  		if (liveVersion == null) {
  			return 0;
  		}
  		else {
  			int retval = 0;
  			// First check if a new version of the type was loaded:
  			if (liveVersion != null) {
  				if (GlobalConfiguration.logging && log.isLoggable(Level.FINER)) {
  					log.info("MethodId=" + methodId + " method=" + typedescriptor.getMethod(methodId));
  				}
  				// TODO [perf] could be faster to return the executor here and if one isn't returned, do the original thing.
  				// the reason for 3 ret vals here is due to catching methods that have been deleted early - lets let the
  				// executor throw that exception, then this side we don't have to worry so much and instead of 2 check calls (changed then getexecutor) we can
  				// just have one.  Will increase speed and reduce generated code (speeding up loadtime!)
  				// was the method deleted?
  				boolean b = liveVersion.incrementalTypeDescriptor.hasBeenDeleted(methodId);
  				if (b) {
  					retval = 2;
  				}
  				else {
  					retval = liveVersion.incrementalTypeDescriptor.mustUseExecutorForThisMethod(methodId) ? 1 : 0;
  				}
  			}
  			// TODO could be extremely fine grained and consider individual method changes
  			//		return memberIntMap.get(methodId).hasChanged();
  			return retval;
  		}
  	}
docs: Check if the specified method is different to the original form from the type as loaded.
  
  @param methodId the ID of the method currently executing
  @return 0 if the method cannot have changed. 1 if the method has changed. 2 if the method has been deleted in a
  new version.