code: function() {
              
              var target = arguments[0];
              
              for (var i = 1, l = arguments.length; i < l; i++) {
                  
                  var extension = arguments[i];
                  
                  // Only functions and objects can be mixined.
  
                  if ((Object(extension) !== extension) &&
                      !_.isFunction(extension) &&
                      (extension === null || extension === undefined)) {
  
                      continue;
                  }
  
                  _.each(extension, function(copy, key) {
                      
                      if (this.mixin.deep && (Object(copy) === copy)) {
  
                          if (!target[key]) {
  
                              target[key] = _.isArray(copy) ? [] : {};
                          }
                          
                          this.mixin(target[key], copy);
                          return;
                      }
                      
                      if (target[key] !== copy) {
                          
                          if (!this.mixin.supplement || !target.hasOwnProperty(key)) {
                              
  	                    target[key] = copy;
                          }
  
                      }
                      
                  }, this);
              }
              
              return target;
          }
docs: Copy all the properties to the first argument from the following arguments. All the properties will be overwritten by the properties from the following arguments. Inherited properties are ignored.