code: function callMethod(target, parseArgs, args) {
  
      // The first argument should be a function or an array.
      var func = args[0],
          funcArgs = [],
          modifiedArgs = [];
  
      // Handles [func, arg1, arg2, arg3], ...
      if (isArray(func) && isFunction(func[0])) {
          funcArgs = func.splice(1);
          func = func[0];
          modifiedArgs = args.splice(1);
  
      } else if (isFunction(func)) {
          funcArgs = args.splice(1);
  
      } else {
          errorManager.illegalArgument(args,
              'first argument must be a function');
      }
  
      // The source properties will be added here.
      var Scope = function() {};
  
      // Ensure the function has access to the target's current properties,
      // so that it can make function calls for example.
      Scope.prototype = target;
  
      // Apply with scope.
      var scope = new Scope();
      fastApply(func, scope, funcArgs);
  
      // Copy the non-prototype properties to source.
      var source = {};
      for (var key in scope) {
          if (scope.hasOwnProperty(key)) {
              source[key] = scope[key];
          }
      }
  
      // Reconstruct the method args with the new source object.
      modifiedArgs.unshift(source);
  
      return parseArgs(modifiedArgs);
  }
docs: /*
  A method  which calls the function with a
  "this" object and uses the resulting properties as the source
  properties to copy to the target object.