code: function(instance, instance_class_name, function_name, new_function_name) {
  
  		var cd = instance.Class,
  			proto = cd.constructor.prototype,
  			names = cd.hierarchy_names,
  			i = names.indexOf(instance_class_name),
  			count = names.length,
  			overridden_name;
  
  		if (Lava.schema.DEBUG && i == -1) Lava.t();
  
  		// find method that belongs to this class body
  		for (; i < count; i++) {
  			overridden_name = names[i] + "$" + function_name;
  			// must not use "in" operator, as function body can be removed and assigned null (see below)
  			if (proto[overridden_name]) {
  				function_name = overridden_name;
  				break;
  			}
  		}
  
  		proto[function_name] = proto[new_function_name];
  		// this plays role when class replaces it's method with parent's method (removes it's own method)
  		// and parent also wants to apply patches to the same method (see comment above about the "in" operator)
  		proto[new_function_name] = null;
  		return function_name;
  
  	}
docs: Replace function in a class with new body. Class may be in middle of inheritance chain.
  Also replaces old method with <kw>null</kw>.
  
  @param {Object} instance Current class instance, must be <kw>this</kw>
  @param {string} instance_class_name Short name of current class
  @param {string} function_name Function to replace
  @param {string} new_function_name Name of new method from the prototype
  @returns {string} name of the method that was replaced