text: // Generated by CoffeeScript 1.10.0
  (function() {
    var _, argumentMatchesExpectation, arityMismatch, equalsWithMatchers, matcherFor;
  
    _ = {
      every: require('lodash/every'),
      isEqual: require('lodash/isEqual'),
      isFunction: require('lodash/isFunction')
    };
  
    module.exports = function(expectedArgs, actualArgs, config) {
      if (arityMismatch(expectedArgs, actualArgs, config)) {
        return false;
      }
      if ((config != null ? config.allowMatchers : void 0) !== false) {
        return equalsWithMatchers(expectedArgs, actualArgs);
      } else {
        return _.isEqual(expectedArgs, actualArgs);
      }
    };
  
    arityMismatch = function(expectedArgs, actualArgs, config) {
      return expectedArgs.length !== actualArgs.length && !config.ignoreExtraArgs;
    };
  
    equalsWithMatchers = function(expectedArgs, actualArgs) {
      return _.every(expectedArgs, function(expectedArg, i) {
        return argumentMatchesExpectation(expectedArg, actualArgs[i]);
      });
    };
  
    argumentMatchesExpectation = function(expectedArg, actualArg) {
      var matcher;
      if (matcher = matcherFor(expectedArg)) {
        return matcher(actualArg);
      } else {
        return _.isEqual(expectedArg, actualArg);
      }
    };
  
    matcherFor = function(expectedArg) {
      if (_.isFunction(expectedArg != null ? expectedArg.__matches : void 0)) {
        return expectedArg.__matches;
      }
    };
  
  }).call(this);
  