@@ -13,18 +13,18 @@ import JSON
1313 'use strict';
1414
1515 function eq(x,y) {
16+ if (x === y) return true;
1617 if (typeof x === "object") {
17− if (x !== null && '_' in x) {
18− for (var i in x) { if (x[i] != y[i]) return false; }
19− for (var i in y) { if (!(i in x)) return false; }
20− return true;
21− }
22− if (x === y) return true;
23− if (x.length !== y.length) return false;
24− for (var i = x.length; i--; ) {
25− if (!eq(x[i],y[i])) return false;
26− }
18+ if ('_' in x) {
19+ for (var i in x) { if (!eq(x[i],y[i])) return false; }
20+ for (var i in y) { if (!(i in x)) return false; }
2721 return true;
22+ }
23+ if (x.ctor !== y.ctor) return false;
24+ for (var i = x.length; i--; ) {
25+ if (!eq(x[i],y[i])) return false;
26+ }
27+ return true;
2828 }
2929 return x === y;
3030 }