text: /* eslint id-length: 0  */
  
  "use strict";
  
  module.exports = function (t) {
  	return {
  		"": function (a) {
  			var i = 0
  			  , fn = function (x) {
  				++i;
  				return x;
  			}
  			  , mfn
  			  , y = {
  				toString: function () {
  					return "foo";
  				}
  			};
  			mfn = t(fn, { primitive: true });
  			a(typeof mfn, "function", "Returns");
  			a(mfn.__memoized__, true, "Marked");
  			a(t(mfn), mfn, "Do not memoize memoized");
  			a(mfn(y), y, "#1");
  			a(mfn("foo"), y, "#2");
  			a(i, 1, "Called once");
  		},
  		"Clear cache": function (a) {
  			var i = 0
  			  , fn = function (x, y, z) {
  				++i;
  				return x + y + z;
  			}
  			  , mfn
  			  , y = {
  				toString: function () {
  					return "foo";
  				}
  			};
  			mfn = t(fn, { primitive: true });
  			a(mfn(y, "bar", "zeta"), "foobarzeta", "#1");
  			a(mfn("foo", "bar", "zeta"), "foobarzeta", "#2");
  			a(i, 1, "Called once");
  			mfn.delete(
  				"foo",
  				{
  					toString: function () {
  						return "bar";
  					}
  				},
  				"zeta"
  			);
  			a(mfn(y, "bar", "zeta"), "foobarzeta", "#3");
  			a(i, 2, "Called twice");
  		}
  	};
  };
  