code: public static Object invokespecialSearch(ReloadableType rt, String nameAndDescriptor) {
  		// does this type define it?  If yes - work out if I need to call through the dispatcher or not.  If no - try my super
  		ReloadableType next = rt;
  		while (next != null) {
  			MethodMember m = null;
  			if (next.hasBeenReloaded()) {
  				m = next.getLiveVersion().incrementalTypeDescriptor.getFromLatestByDescriptor(nameAndDescriptor);
  				if (m != null && IncrementalTypeDescriptor.wasDeleted(m)) {
  					m = null;
  				}
  				// ignore catchers because the dynamic __execute method wont have an implementation of them, we should
  				// just keep looking for the real thing
  				if (m != null && (MethodMember.isCatcher(m) || MethodMember.isSuperDispatcher(m))) {
  					m = null;
  				}
  			}
  			else {
  				m = next.getMethod(nameAndDescriptor);
  			}
  			if (m != null) {
  				if (next.hasBeenReloaded()) {
  					return next.getLatestDispatcherInstance();
  				}
  				else {
  					return null; // do what you were going to do anyway
  				}
  			}
  			next = next.getTypeRegistry().getReloadableType(next.getTypeDescriptor().getSupertypeName(), false);
  		}
  		return null; // let it fail anyway
  	}
docs: TODO what about visibility changes?