code: function (mine, their, strategy) {
          this._doMerge(mine, their, function(key){
              if (typeof their[key] === 'object') {
                  if (their[key] instanceof Array) {
                      mine[key] = [].concat(mine[key], their[key]);
                  } else {
                      mine[key] = this[strategy](mine[key], their[key]);
                  }
              } else if (mine[key] === undefined ) {
                  mine[key] = their[key];
              }
          });
  
          return mine;
      }
docs: runs the deep merge using the given strategy