whole_func_string: function extend(klass, instance, override, methods) {
      var extendee = instance ? klass.prototype : klass;
      initializeClass(klass);
      iterateOverObject(methods, function(name, method) {
        var original = extendee[name];
        var existed  = hasOwnProperty(extendee, name);
        if(typeof override === 'function') {
          method = wrapNative(extendee[name], method, override);
        }
        if(override !== false || !extendee[name]) {
          defineProperty(extendee, name, method);
        }
        // If the method is internal to Sugar, then store a reference so it can be restored later.
        klass['SugarMethods'][name] = { instance: instance, method: method, original: original, existed: existed };
      });
    }
func_code_string: function extend(klass, instance, override, methods) {
      var extendee = instance ? klass.prototype : klass;
      initializeClass(klass);
      iterateOverObject(methods, function(name, method) {
        var original = extendee[name];
        var existed  = hasOwnProperty(extendee, name);
        if(typeof override === 'function') {
          method = wrapNative(extendee[name], method, override);
        }
        if(override !== false || !extendee[name]) {
          defineProperty(extendee, name, method);
        }
        // If the method is internal to Sugar, then store a reference so it can be restored later.
        klass['SugarMethods'][name] = { instance: instance, method: method, original: original, existed: existed };
      });
    }
func_documentation_string: Class extending methods