text: 'use strict';
  
  var d = require('d');
  
  module.exports = function (t, a) {
  	var value = [], obj = {};
  	Object.defineProperties(obj, t({
  		someFn: d(function (x, y) { a(this, obj); return x + y; },
  			{ refCounter: true,
  				dispose: function (val) { value.push(val); } })
  	}));
  
  	obj = Object.create(obj);
  	obj.someFn(3, 7);
  	obj.someFn(5, 8);
  	obj.someFn(12, 4);
  	a.deep(value, [], "Pre");
  	obj.someFn(5, 8);
  	obj.someFn.deleteRef(5, 8);
  	a.deep(value, [], "Pre");
  	obj.someFn.deleteRef(5, 8);
  	a.deep(value, [13], "#1");
  	value = [];
  	obj.someFn.deleteRef(12, 4);
  	a.deep(value, [16], "#2");
  
  	value = [];
  	obj.someFn(77, 11);
  	obj.someFn.clear();
  	a.deep(value, [10, 88], "Clear all");
  };
  