function a(a, b, c, g) { for (;;) { if (0 > c) return a; a: { for (;;) { var k = a.forward[c]; if (t(k)) if (k.key < b) a = k; else break a; else break a } a = void 0 } null != g && (g[c] = a); c -= 1 } } function t(a) { return null != a && !1 !== a } var d = {forward: [{},null,{}]} for (var i=0; i < 1000; i++) { a(d, 0, 1, null); a(d, 0, 0, null); } function test(a) { var t = a[0] if (t) { return t.test; } } function test2(a) { var t = a[0] if (t) { if (t) { return t.test; } } } function test3(a) { var t = a[0] if (t !== null) { if (t !== undefined) { return t.test; } } } var a = [{test:1}] var b = [undefined] assertEq(test(b), undefined) assertEq(test(a), 1) assertEq(test(a), 1) assertEq(test2(b), undefined) assertEq(test2(a), 1) assertEq(test2(a), 1) assertEq(test3(b), undefined) assertEq(test3(a), 1) assertEq(test3(a), 1)