code: function minErr(module) {
      return function () {
        var prefix = '[' + (module ? module + ':' : '') + arguments[0] + '] ',
          template = arguments[1],
          templateArgs = arguments,
          message;
  
        message = prefix + template.replace(/\{\d+\}/g, function (match) {
          var index = +match.slice(1, -1), arg;
  
          if (index + 2 < templateArgs.length) {
            arg = templateArgs[index + 2];
            if (isFunction(arg)) {
              return arg.toString().replace(/ ?\{[\s\S]*$/, '');
            } else if (isUndefined(arg)) {
              return 'undefined';
            } else if (!isString(arg)) {
              return toJson(arg);
            }
            return arg;
          }
          return match;
        });
  
        return new Error(message);
      };
    }
docs: @description
  
  This object provides a utility for producing rich Error messages within
  Angular. It can be called as follows:
  
  var exampleMinErr = minErr('example');
  throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
  
  The above creates an instance of minErr in the example namespace. The
  resulting error will have a namespaced error code of example.one.  The
  resulting error will replace {0} with the value of foo, and {1} with the
  value of bar. The object is not restricted in the number of arguments it can
  take.
  
  If fewer arguments are specified than necessary for interpolation, the extra
  interpolation markers will be preserved in the final string.
  
  Since data will be parsed statically during a build step, some restrictions
  are applied with respect to how minErr instances are created and called.
  Instances should have names of the form namespaceMinErr for a minErr created
  using minErr('namespace') . Error codes, namespaces and template strings
  should all be static strings, not variables or general expressions.
  
  @param {string} module The namespace to use for the new minErr instance.
  @returns {function(string, string, ...): Error} instance