code: function() {
        var refArgs = Array.prototype.slice.call(arguments);
        var calledArgs = this.actual.mostRecentCall.args;
        var arg;
  
        for(arg in refArgs){
          var ref = refArgs[arg];
          var test = calledArgs[arg];
  
          // if the types of the objects dont match
          if(typeof ref !== typeof test) {
            return false;
          // if ref and test are objects make then
          } else if(typeof ref === "object" && typeof test === "object") {
            if(!objectSignaturesMatch(ref, test)){
              return false;
            }
          } else if(typeof ref === "array" && typeof test === "array") {
            if(!arrySignaturesMatch(ref, test)){
              return false;
            }
          }
        }
        return true;
      }
docs: this is a lazy matcher for jasmine spies. it checks that the arguments for the last call made match all the arguments that are passed into the function, but does not care if the values match only that they are the same type.  in short this only cares that all teh keys are the same and the types of values are the same, not the values themselves