var keyList = Object.keys;
exports.equal = function equal (a, b) {
if (a === b) return true;
if (!(a instanceof Object) || !(b instanceof Object)) return false;
var keys = keyList(a);
var length = keys.length;
for (var i = 0; i < length; i++)
if (!(keys[i] in b)) return false;
for (var i = 0; i < length; i++)
if (a[keys[i]] !== b[keys[i]]) return false;
return length === keyList(b).length;
};