NodeFilter should be a callback interface
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Sep 2015 21:49:44 +0000 (21:49 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Sep 2015 21:49:44 +0000 (21:49 +0000)
https://bugs.webkit.org/show_bug.cgi?id=148415

Reviewed by Geoffrey Garen.

Source/WebCore:

NodeFilter is now a callback interface, instead of a regular interface,
as per the DOM specification:
https://dom.spec.whatwg.org/#interface-nodefilter

One major difference is that TreeWalker.filter / NodeIterator is
supposed to be a Function / Object (passed by JavaScript), but it was a
JSNodeFilter wrapper in WebKit. Also, window.NodeFilter is not supposed
to have a prototype property.

This behavior is consistent with Firefox. However, Chrome still has its
own NodeFilter wrapper.

Tests:
http/tests/w3c/dom/traversal/NodeIterator-expected.html (rebaselined)
http/tests/w3c/dom/traversal/TreeWalker.html (rebaselined)

* CMakeLists.txt:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
Add / Remove files to the project files.

* dom/NodeFilterCondition.cpp:
(WebCore::NodeFilterCondition::acceptNode):
* dom/NodeFilterCondition.h:
* bindings/gobject/GObjectNodeFilterCondition.cpp:
(WebCore::GObjectNodeFilterCondition::acceptNode):
* bindings/gobject/GObjectNodeFilterCondition.h:
* bindings/objc/ObjCNodeFilterCondition.h:
* bindings/objc/ObjCNodeFilterCondition.mm:
(WebCore::ObjCNodeFilterCondition::acceptNode):
Drop ExecState parameter as it is not used.

* bindings/gobject/WebKitDOMNodeFilter.cpp:
(WebKit::core):
Use NativeNodeFilter type instead of NodeFilter. NodeFilter is now
a pure interface with 2 subclasses: NativeNodeFilter for the native
bindings and JSNodeFilter for the JS bindings.

* bindings/js/JSBindingsAllInOne.cpp:
Drop JSNodeFilterCondition.cpp as it was removed.

* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
Throw a TypeError if the callback object being invoked is not callable
and does not have a callable property with the expected name. There
are several layout tests covering this (including w3c ones). Previously,
NodeFilter was not using the generic JSCallbackData and the exception
throwing was in JSNodeFilterCondition::acceptNode() instead.

* bindings/js/JSNodeFilterCondition.cpp: Removed.
* bindings/js/JSNodeFilterCondition.h: Removed.
Drop this class. JSNodeFilter / JSNodeFilterCustom now basically take
care of all this.

* bindings/js/JSNodeFilterCustom.cpp:
(WebCore::JSNodeFilter::acceptNode):
Complete rewrite. This file is now only used to provide a custom
implementation for JSNodeFilter::acceptNode(). The code is similar to
what was previously done in JSNodeFilterCondition::acceptNode().
There are several reasons we need custom bindings here:
- The bindings generator does not handle yet callback functions
  returning anything else than a boolean.
- The specification clearly states that we need to rethrow exceptions
  thrown by the callback function. However, the default behavior of
  our bindings is to simply report the exception.

* bindings/scripts/CodeGeneratorGObject.pm:
Only skip functions that have parameters that are callback *functions*,
not callback *interfaces*. Callback interfaces are very similar to
interfaces and the generator is able to handle them. This change was
needed for the GTK bindings generator would no longer generate bindings
for Document.createNodeIterator() / Document.createTreeWalker(), now
that NodeFilter is a callback interface instead of a regular interface.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateCallbackHeader):
(GenerateCallbackImplementation):
Generate a toJS() function for callback interfaces as well. Previously,
we would only generate those for regular interfaces. This is needed
because NodeFilter is now a callback interface and it is exposed to
JS via NodeIterator.filter / TreeWalker.filter. The implementation
merely returns the callback object / function inside the JSCalbackData
so the JS gets back the object / function it passed in.

* bindings/scripts/CodeGeneratorObjC.pm:
Tweak the ObjC bindings generator to use NativeNodeFilter class instead
of NodeFilter as NodeFilter is now a pure interfaces. Native bindings
are now expected to use the NativeNodeFilter subclass instead.

* bindings/scripts/test/JS/JSTestCallback.cpp:
* bindings/scripts/test/JS/JSTestCallback.h:
* bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
* bindings/scripts/test/JS/JSTestCallbackFunction.h:
Rebaseline bindings tests now that we generate toJS() functions for
callback functions / interfaces.

* dom/DOMAllInOne.cpp:
Drop NodeFilter.cpp as it was removed.

* dom/NativeNodeFilter.cpp: Added.
* dom/NativeNodeFilter.h: Added.
Introduce new NativeNodeFilter class which subclasses the NodeFilter
interface and is used by native bindings. Its accept() implementation
uses NodeFilterCondition object internally to filter the nodes instead
of a JS callback.

* dom/NodeFilter.cpp: Removed.
* dom/NodeFilter.h:
Make NodeFilter a pure interface. Its previous code is now either in
NativeNodeFilter of JSNodeFilter.

* dom/NodeFilter.idl:
Make NodeFilter a callback interface instead of a regular interface,
as per the DOM specification. Also have its accept() operation return
an unsigned short instead of a short to match the specification.
The ObjC version still returns a short though for backward
compatibility.

* dom/NodeFilterCondition.cpp:
(WebCore::NodeFilterCondition::acceptNode):
* dom/NodeFilterCondition.h:

* dom/NodeIterator.cpp:
* dom/NodeIterator.h:
* dom/NodeIterator.idl:
* dom/Traversal.cpp:
* dom/Traversal.h:
* dom/TreeWalker.cpp:
* dom/TreeWalker.h:
* dom/TreeWalker.idl:
Stop passing ExecState to TreeWalker / NodeIterator functions. It no
longer seems to be needed as we now use the JSCallbackData abstraction
for invoking JS.

LayoutTests:

* fast/dom/TreeWalker/acceptNode-filter-expected.txt:
Rebaseline, the new exception message is different but the exception
type is the same.

* fast/dom/constants-expected.txt:
* fast/dom/constants.html:
Stop checking for constants on NodeFilter instances as those are now
Functions (implemented by the JavaScript). Those constants are on
window.NodeFilter still. I verified that this is consistant with
Firefox.

* fast/dom/global-constructors.html:
Update the check to verify that the prototype of a NodeFilter instance
is the Function prototype, not the NodeFilter prototype. NodeFilter
should not have a prototype as it is a callback interface.

* fast/dom/node-filter-gc.html:
Pass null for the filter argument instead of 0. The functions expect
a nullable NodeFilter object. Passing 0 here throws.

* fast/dom/node-filter-interface-expected.txt:
Rebaseline. window.NodeFilter no longer has a prototype. This is because
callback interfaces are not supposed to have a prototype property, as
per the Web IDL specification:
https://heycam.github.io/webidl/#interface-prototype-object

I also verified that this is consistent with Firefox.

* http/tests/w3c/dom/interfaces-expected.txt:
* http/tests/w3c/dom/nodes/Document-createTreeWalker-expected.txt:
* http/tests/w3c/dom/traversal/NodeIterator-expected.txt:
* http/tests/w3c/dom/traversal/TreeWalker-expected.txt:
Rebaseline W3C tests. We are now passing a lot of checks because they
check that TreeWalker.filter / NodeIterator.filter is a Function.

* traversal/size-zero-run.html:
Fix the test to pass a null node filter instead of NodeFilter.FILTER_ACCEPT.
The call was not valid and now correctly throws. The JS is supposed to pass
in a nullable NodeFilter, not a constant. I think the code meant to say
"function() { return NodeFilter.FILTER_ACCEPT; }", however, I used null as
it is shorter and equivalent.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@189230 268f45cc-cd09-0410-ab3c-d52691b4dbfc

52 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/dom/TreeWalker/acceptNode-filter-expected.txt
LayoutTests/fast/dom/constants-expected.txt
LayoutTests/fast/dom/constants.html
LayoutTests/fast/dom/global-constructors.html
LayoutTests/fast/dom/node-filter-gc.html
LayoutTests/fast/dom/node-filter-interface-expected.txt
LayoutTests/http/tests/w3c/dom/interfaces-expected.txt
LayoutTests/http/tests/w3c/dom/nodes/Document-createTreeWalker-expected.txt
LayoutTests/http/tests/w3c/dom/traversal/NodeIterator-expected.txt
LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-expected.txt
LayoutTests/traversal/size-zero-run.html
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/gobject/GObjectNodeFilterCondition.cpp
Source/WebCore/bindings/gobject/GObjectNodeFilterCondition.h
Source/WebCore/bindings/gobject/WebKitDOMNodeFilter.cpp
Source/WebCore/bindings/js/JSBindingsAllInOne.cpp
Source/WebCore/bindings/js/JSCallbackData.cpp
Source/WebCore/bindings/js/JSCallbackData.h
Source/WebCore/bindings/js/JSNodeFilterCondition.cpp [deleted file]
Source/WebCore/bindings/js/JSNodeFilterCondition.h [deleted file]
Source/WebCore/bindings/js/JSNodeFilterCustom.cpp
Source/WebCore/bindings/objc/ObjCNodeFilterCondition.h
Source/WebCore/bindings/objc/ObjCNodeFilterCondition.mm
Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/CodeGeneratorObjC.pm
Source/WebCore/bindings/scripts/IDLAttributes.txt
Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCallback.h
Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h
Source/WebCore/dom/DOMAllInOne.cpp
Source/WebCore/dom/NativeNodeFilter.cpp [new file with mode: 0644]
Source/WebCore/dom/NativeNodeFilter.h [new file with mode: 0644]
Source/WebCore/dom/NodeFilter.cpp [deleted file]
Source/WebCore/dom/NodeFilter.h
Source/WebCore/dom/NodeFilter.idl
Source/WebCore/dom/NodeFilterCondition.cpp
Source/WebCore/dom/NodeFilterCondition.h
Source/WebCore/dom/NodeIterator.cpp
Source/WebCore/dom/NodeIterator.h
Source/WebCore/dom/NodeIterator.idl
Source/WebCore/dom/Traversal.cpp
Source/WebCore/dom/Traversal.h
Source/WebCore/dom/TreeWalker.cpp
Source/WebCore/dom/TreeWalker.h
Source/WebCore/dom/TreeWalker.idl

index 10c6abc..d2c6438 100644 (file)
@@ -1,3 +1,52 @@
+2015-09-01  Chris Dumez  <cdumez@apple.com>
+
+        NodeFilter should be a callback interface
+        https://bugs.webkit.org/show_bug.cgi?id=148415
+
+        Reviewed by Geoffrey Garen.
+
+        * fast/dom/TreeWalker/acceptNode-filter-expected.txt:
+        Rebaseline, the new exception message is different but the exception
+        type is the same.
+
+        * fast/dom/constants-expected.txt:
+        * fast/dom/constants.html:
+        Stop checking for constants on NodeFilter instances as those are now
+        Functions (implemented by the JavaScript). Those constants are on
+        window.NodeFilter still. I verified that this is consistant with
+        Firefox.
+
+        * fast/dom/global-constructors.html:
+        Update the check to verify that the prototype of a NodeFilter instance
+        is the Function prototype, not the NodeFilter prototype. NodeFilter
+        should not have a prototype as it is a callback interface.
+
+        * fast/dom/node-filter-gc.html:
+        Pass null for the filter argument instead of 0. The functions expect
+        a nullable NodeFilter object. Passing 0 here throws.
+
+        * fast/dom/node-filter-interface-expected.txt:
+        Rebaseline. window.NodeFilter no longer has a prototype. This is because
+        callback interfaces are not supposed to have a prototype property, as
+        per the Web IDL specification:
+        https://heycam.github.io/webidl/#interface-prototype-object
+
+        I also verified that this is consistent with Firefox.
+
+        * http/tests/w3c/dom/interfaces-expected.txt:
+        * http/tests/w3c/dom/nodes/Document-createTreeWalker-expected.txt:
+        * http/tests/w3c/dom/traversal/NodeIterator-expected.txt:
+        * http/tests/w3c/dom/traversal/TreeWalker-expected.txt:
+        Rebaseline W3C tests. We are now passing a lot of checks because they
+        check that TreeWalker.filter / NodeIterator.filter is a Function.
+
+        * traversal/size-zero-run.html:
+        Fix the test to pass a null node filter instead of NodeFilter.FILTER_ACCEPT.
+        The call was not valid and now correctly throws. The JS is supposed to pass
+        in a nullable NodeFilter, not a constant. I think the code meant to say
+        "function() { return NodeFilter.FILTER_ACCEPT; }", however, I used null as
+        it is shorter and equivalent.
+
 2015-09-01  Ryosuke Niwa  <rniwa@webkit.org>
 
         Add tests for computed method declarations with side effects
index ca5da84..ee7d21a 100644 (file)
@@ -26,15 +26,15 @@ PASS walker.firstChild(); walker.currentNode.id is 'A1'
 PASS walker.nextNode(); walker.currentNode.id is 'B1'
 
 Testing with object lacking acceptNode property
-PASS walker.firstChild(); threw exception TypeError: NodeFilter object does not have an acceptNode function.
+PASS walker.firstChild(); threw exception TypeError: Type error.
 PASS walker.currentNode.id; is 'root'
-PASS walker.nextNode(); threw exception TypeError: NodeFilter object does not have an acceptNode function.
+PASS walker.nextNode(); threw exception TypeError: Type error.
 PASS walker.currentNode.id; is 'root'
 
 Testing with object with non-function acceptNode property
-PASS walker.firstChild(); threw exception TypeError: NodeFilter object does not have an acceptNode function.
+PASS walker.firstChild(); threw exception TypeError: Type error.
 PASS walker.currentNode.id; is 'root'
-PASS walker.nextNode(); threw exception TypeError: NodeFilter object does not have an acceptNode function.
+PASS walker.nextNode(); threw exception TypeError: Type error.
 PASS walker.currentNode.id; is 'root'
 
 Testing with function having acceptNode function
index 47fc5b2..bfd6570 100644 (file)
@@ -24,22 +24,6 @@ PASS: window.CSSValue.CSS_INHERIT should be 0 and is.
 PASS: window.CSSValue.CSS_PRIMITIVE_VALUE should be 1 and is.
 PASS: window.CSSValue.CSS_VALUE_LIST should be 2 and is.
 PASS: window.CSSValue.CSS_CUSTOM should be 3 and is.
-PASS: nodeFilter.FILTER_ACCEPT should be 1 and is.
-PASS: nodeFilter.FILTER_REJECT should be 2 and is.
-PASS: nodeFilter.FILTER_SKIP should be 3 and is.
-PASS: nodeFilter.SHOW_ALL should be 4294967295 and is.
-PASS: nodeFilter.SHOW_ELEMENT should be 1 and is.
-PASS: nodeFilter.SHOW_ATTRIBUTE should be 2 and is.
-PASS: nodeFilter.SHOW_TEXT should be 4 and is.
-PASS: nodeFilter.SHOW_CDATA_SECTION should be 8 and is.
-PASS: nodeFilter.SHOW_ENTITY_REFERENCE should be 16 and is.
-PASS: nodeFilter.SHOW_ENTITY should be 32 and is.
-PASS: nodeFilter.SHOW_PROCESSING_INSTRUCTION should be 64 and is.
-PASS: nodeFilter.SHOW_COMMENT should be 128 and is.
-PASS: nodeFilter.SHOW_DOCUMENT should be 256 and is.
-PASS: nodeFilter.SHOW_DOCUMENT_TYPE should be 512 and is.
-PASS: nodeFilter.SHOW_DOCUMENT_FRAGMENT should be 1024 and is.
-PASS: nodeFilter.SHOW_NOTATION should be 2048 and is.
 PASS: window.NodeFilter.FILTER_ACCEPT should be 1 and is.
 PASS: window.NodeFilter.FILTER_REJECT should be 2 and is.
 PASS: window.NodeFilter.FILTER_SKIP should be 3 and is.
index dce2588..195bbcd 100644 (file)
@@ -32,7 +32,7 @@ function shouldBe(a, b)
     print(message, color);
 }
 
-var cssRule, cssValue, nodeFilter, event;
+var cssRule, cssValue, event;
 
 function test() {
     if (window.testRunner)
@@ -66,34 +66,6 @@ function test() {
     shouldBe("window.CSSValue.CSS_VALUE_LIST", 2);
     shouldBe("window.CSSValue.CSS_CUSTOM", 3);
 
-    var nodeIterator;
-    try {
-        nodeIterator = document.createNodeIterator(document, 
-                                                   NodeFilter.SHOW_ELEMENT, 
-                                                   function () { return NodeFilter.FILTER_ACCEPT; }, 
-                                                   false);
-    } catch(e) {
-        nodeIterator = new Object();
-    }
-    
-    nodeFilter = nodeIterator.filter;
-    shouldBe("nodeFilter.FILTER_ACCEPT", 1);
-    shouldBe("nodeFilter.FILTER_REJECT", 2);
-    shouldBe("nodeFilter.FILTER_SKIP", 3);
-    shouldBe("nodeFilter.SHOW_ALL", 0xFFFFFFFF);
-    shouldBe("nodeFilter.SHOW_ELEMENT", 0x00000001);
-    shouldBe("nodeFilter.SHOW_ATTRIBUTE", 0x00000002);
-    shouldBe("nodeFilter.SHOW_TEXT", 0x00000004);
-    shouldBe("nodeFilter.SHOW_CDATA_SECTION", 0x00000008);
-    shouldBe("nodeFilter.SHOW_ENTITY_REFERENCE", 0x00000010);
-    shouldBe("nodeFilter.SHOW_ENTITY", 0x00000020);
-    shouldBe("nodeFilter.SHOW_PROCESSING_INSTRUCTION", 0x00000040);
-    shouldBe("nodeFilter.SHOW_COMMENT", 0x00000080);
-    shouldBe("nodeFilter.SHOW_DOCUMENT", 0x00000100);
-    shouldBe("nodeFilter.SHOW_DOCUMENT_TYPE", 0x00000200);
-    shouldBe("nodeFilter.SHOW_DOCUMENT_FRAGMENT", 0x00000400);
-    shouldBe("nodeFilter.SHOW_NOTATION", 0x00000800);
-
     shouldBe("window.NodeFilter.FILTER_ACCEPT", 1);
     shouldBe("window.NodeFilter.FILTER_REJECT", 2);
     shouldBe("window.NodeFilter.FILTER_SKIP", 3);
index 97d2fad..0b39dd0 100644 (file)
@@ -85,7 +85,7 @@ function test()
     try {
       nodeFilter = document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, function () {}, false).filter;
     } catch(e) {}
-    shouldBe("window.NodeFilter.prototype.isPrototypeOf(nodeFilter)", true);
+    shouldBe("Function.prototype.isPrototypeOf(nodeFilter)", true);
 
     originalNodePrototype = window.Node.prototype;
     
index 0649ad2..a204c44 100644 (file)
@@ -3,8 +3,8 @@
 if (window.testRunner)
     testRunner.dumpAsText();
     
-var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, 0, false);
-var walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, 0, false);
+var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, null, false);
+var walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, null, false);
 
 // create lots of objects to force a garbage collection
  var i = 0;
index 5e54686..d4a98c8 100644 (file)
@@ -39,8 +39,6 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 [Configurable: true, enumerable: false, writable: false, value: 0]
 * name
 [Configurable: true, enumerable: false, writable: false, value: NodeFilter]
-* prototype
-[Configurable: false, enumerable: false, writable: false, value: [object NodeFilterPrototype]]
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 8222492..7d40872 100644 (file)
@@ -1890,41 +1890,41 @@ PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.S
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "previousNode" with the proper type (9) 
 PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property "nextNode" with the proper type (10) 
 PASS NodeFilter interface: existence and properties of interface object 
-FAIL NodeFilter interface: existence and properties of interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
-FAIL NodeFilter interface: existence and properties of interface prototype object's "constructor" property assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: existence and properties of interface prototype object 
+PASS NodeFilter interface: existence and properties of interface prototype object's "constructor" property 
 PASS NodeFilter interface: constant FILTER_ACCEPT on interface object 
-FAIL NodeFilter interface: constant FILTER_ACCEPT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant FILTER_ACCEPT on interface prototype object 
 PASS NodeFilter interface: constant FILTER_REJECT on interface object 
-FAIL NodeFilter interface: constant FILTER_REJECT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant FILTER_REJECT on interface prototype object 
 PASS NodeFilter interface: constant FILTER_SKIP on interface object 
-FAIL NodeFilter interface: constant FILTER_SKIP on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant FILTER_SKIP on interface prototype object 
 PASS NodeFilter interface: constant SHOW_ALL on interface object 
-FAIL NodeFilter interface: constant SHOW_ALL on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_ALL on interface prototype object 
 PASS NodeFilter interface: constant SHOW_ELEMENT on interface object 
-FAIL NodeFilter interface: constant SHOW_ELEMENT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_ELEMENT on interface prototype object 
 PASS NodeFilter interface: constant SHOW_ATTRIBUTE on interface object 
-FAIL NodeFilter interface: constant SHOW_ATTRIBUTE on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_ATTRIBUTE on interface prototype object 
 PASS NodeFilter interface: constant SHOW_TEXT on interface object 
-FAIL NodeFilter interface: constant SHOW_TEXT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_TEXT on interface prototype object 
 PASS NodeFilter interface: constant SHOW_CDATA_SECTION on interface object 
-FAIL NodeFilter interface: constant SHOW_CDATA_SECTION on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_CDATA_SECTION on interface prototype object 
 PASS NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface object 
-FAIL NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_ENTITY_REFERENCE on interface prototype object 
 PASS NodeFilter interface: constant SHOW_ENTITY on interface object 
-FAIL NodeFilter interface: constant SHOW_ENTITY on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_ENTITY on interface prototype object 
 PASS NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface object 
-FAIL NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_PROCESSING_INSTRUCTION on interface prototype object 
 PASS NodeFilter interface: constant SHOW_COMMENT on interface object 
-FAIL NodeFilter interface: constant SHOW_COMMENT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_COMMENT on interface prototype object 
 PASS NodeFilter interface: constant SHOW_DOCUMENT on interface object 
-FAIL NodeFilter interface: constant SHOW_DOCUMENT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_DOCUMENT on interface prototype object 
 PASS NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface object 
-FAIL NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_DOCUMENT_TYPE on interface prototype object 
 PASS NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface object 
-FAIL NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_DOCUMENT_FRAGMENT on interface prototype object 
 PASS NodeFilter interface: constant SHOW_NOTATION on interface object 
-FAIL NodeFilter interface: constant SHOW_NOTATION on interface prototype object assert_false: NodeFilter should not have a "prototype" property expected false got true
-FAIL NodeFilter interface: operation acceptNode(Node) assert_false: NodeFilter should not have a "prototype" property expected false got true
+PASS NodeFilter interface: constant SHOW_NOTATION on interface prototype object 
+PASS NodeFilter interface: operation acceptNode(Node) 
 FAIL DOMTokenList interface: existence and properties of interface object assert_equals: class string of DOMTokenList expected "[object Function]" but got "[object DOMTokenListConstructor]"
 PASS DOMTokenList interface object length 
 PASS DOMTokenList interface: existence and properties of interface prototype object 
index 72ead53..38ef008 100644 (file)
@@ -3,5 +3,5 @@ PASS Required arguments to createTreeWalker should be required.
 PASS Optional arguments to createTreeWalker should be optional (1 passed). 
 PASS Optional arguments to createTreeWalker should be optional (2 passed). 
 PASS Optional arguments to createTreeWalker should be optional (3 passed, null). 
-FAIL Optional arguments to createTreeWalker should be optional (3 passed, function). assert_equals: expected (function) function "function () {}" but got (object) object "[object NodeFilter]"
+PASS Optional arguments to createTreeWalker should be optional (3 passed, function). 
 
index 4d5986c..8a56d7a 100644 (file)
@@ -5,743 +5,743 @@ PASS createNodeIterator() with null as arguments
 FAIL createNodeIterator() with undefined as arguments assert_equals: whatToShow expected 4294967295 but got 0
 PASS Propagate exception from filter function 
 PASS document.createNodeIterator(paras[0], 0, null) 
-FAIL document.createNodeIterator(paras[0], 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0], 0, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0], 0, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0], 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0], 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0].firstChild, 0, null) 
-FAIL document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1].firstChild, 0, null) 
-FAIL document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1, 0, null) 
-FAIL document.createNodeIterator(foreignPara1, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1.firstChild, 0, null) 
-FAIL document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1, 0, null) 
-FAIL document.createNodeIterator(detachedPara1, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1.firstChild, 0, null) 
-FAIL document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(document, 0, null) 
-FAIL document.createNodeIterator(document, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(document, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(document, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(document, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(document, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedDiv, 0, null) 
-FAIL document.createNodeIterator(detachedDiv, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedDiv, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedDiv, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedDiv, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedDiv, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoc, 0, null) 
-FAIL document.createNodeIterator(foreignDoc, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoc, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoc, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoc, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoc, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara2, 0, null) 
-FAIL document.createNodeIterator(foreignPara2, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara2, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara2, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara2, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara2, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoc, 0, null) 
-FAIL document.createNodeIterator(xmlDoc, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoc, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoc, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoc, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoc, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlElement, 0, null) 
-FAIL document.createNodeIterator(xmlElement, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlElement, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlElement, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlElement, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedTextNode, 0, null) 
-FAIL document.createNodeIterator(detachedTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedTextNode, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedTextNode, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignTextNode, 0, null) 
-FAIL document.createNodeIterator(foreignTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignTextNode, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignTextNode, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(processingInstruction, 0, null) 
-FAIL document.createNodeIterator(processingInstruction, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(processingInstruction, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(processingInstruction, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(processingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(processingInstruction, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(processingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedProcessingInstruction, 0, null) 
-FAIL document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(comment, 0, null) 
-FAIL document.createNodeIterator(comment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(comment, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(comment, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(comment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(comment, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(comment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedComment, 0, null) 
-FAIL document.createNodeIterator(detachedComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedComment, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedComment, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedComment, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(docfrag, 0, null) 
-FAIL document.createNodeIterator(docfrag, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(docfrag, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(docfrag, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(docfrag, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(docfrag, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(docfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(doctype, 0, null) 
-FAIL document.createNodeIterator(doctype, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(doctype, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(doctype, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(doctype, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(doctype, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(doctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoctype, 0, null) 
-FAIL document.createNodeIterator(foreignDoctype, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoctype, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoctype, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1], 0, null) 
-FAIL document.createNodeIterator(paras[1], 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1], 0, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1], 0, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1], 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1], 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2, 0, null) 
-FAIL document.createNodeIterator(detachedPara2, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2.firstChild, 0, null) 
-FAIL document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(testDiv, 0, null) 
-FAIL document.createNodeIterator(testDiv, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(testDiv, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(testDiv, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(testDiv, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(testDiv, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlElement, 0, null) 
-FAIL document.createNodeIterator(detachedXmlElement, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlElement, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlElement, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignTextNode, 0, null) 
-FAIL document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlTextNode, 0, null) 
-FAIL document.createNodeIterator(xmlTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlTextNode, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlTextNode, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlTextNode, 0, null) 
-FAIL document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlComment, 0, null) 
-FAIL document.createNodeIterator(xmlComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlComment, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlComment, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlComment, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignComment, 0, null) 
-FAIL document.createNodeIterator(foreignComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignComment, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignComment, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignComment, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignComment, 0, null) 
-FAIL document.createNodeIterator(detachedForeignComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignComment, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignComment, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlComment, 0, null) 
-FAIL document.createNodeIterator(detachedXmlComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlComment, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlComment, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDocfrag, 0, null) 
-FAIL document.createNodeIterator(foreignDocfrag, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDocfrag, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDocfrag, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDocfrag, 0, null) 
-FAIL document.createNodeIterator(xmlDocfrag, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDocfrag, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDocfrag, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoctype, 0, null) 
-FAIL document.createNodeIterator(xmlDoctype, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoctype, 0, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoctype, 0, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, null) 
-FAIL document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createNodeIterator(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 
index 9abed30..655784d 100644 (file)
 
 PASS document.createTreeWalker(paras[0], 0, null) 
-FAIL document.createTreeWalker(paras[0], 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0], 0, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0], 0, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0], 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0], 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(paras[0], 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0], 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0], 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0].firstChild, 0, null) 
-FAIL document.createTreeWalker(paras[0].firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0].firstChild, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0].firstChild, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[0].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1].firstChild, 0, null) 
-FAIL document.createTreeWalker(paras[1].firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1].firstChild, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1].firstChild, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1].firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1].firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1].firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1, 0, null) 
-FAIL document.createTreeWalker(foreignPara1, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignPara1, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1.firstChild, 0, null) 
-FAIL document.createTreeWalker(foreignPara1.firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1.firstChild, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1, 0, null) 
-FAIL document.createTreeWalker(detachedPara1, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedPara1, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1.firstChild, 0, null) 
-FAIL document.createTreeWalker(detachedPara1.firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1.firstChild, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara1.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(document, 0, null) 
-FAIL document.createTreeWalker(document, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(document, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(document, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(document, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(document, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return false })) 
+FAIL document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node "TreeWalker tests" but got null
 PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedDiv, 0, null) 
-FAIL document.createTreeWalker(detachedDiv, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedDiv, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedDiv, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedDiv, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedDiv, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return false })) 
+FAIL document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node "Wxyzabcd" but got null
 PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoc, 0, null) 
-FAIL document.createTreeWalker(foreignDoc, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoc, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoc, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoc, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoc, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return false })) 
+FAIL document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node "Efghijkl" but got Comment node <!--"Commenter" and "commentator" mean different things.  I'v...-->
 PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara2, 0, null) 
-FAIL document.createTreeWalker(foreignPara2, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara2, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara2, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara2, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara2, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignPara2, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara2, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara2, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoc, 0, null) 
-FAIL document.createTreeWalker(xmlDoc, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoc, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoc, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoc, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoc, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return false })) 
+FAIL document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node "do re mi fa so la ti" but got Comment node <!--I maliciously created a comment that will break incautiou...-->
 PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlElement, 0, null) 
-FAIL document.createTreeWalker(xmlElement, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlElement, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlElement, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlElement, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(xmlElement, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlElement, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlElement, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedTextNode, 0, null) 
-FAIL document.createTreeWalker(detachedTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedTextNode, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedTextNode, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignTextNode, 0, null) 
-FAIL document.createTreeWalker(foreignTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignTextNode, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignTextNode, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(processingInstruction, 0, null) 
-FAIL document.createTreeWalker(processingInstruction, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(processingInstruction, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(processingInstruction, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(processingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(processingInstruction, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(processingInstruction, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(processingInstruction, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(processingInstruction, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(processingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(processingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedProcessingInstruction, 0, null) 
-FAIL document.createTreeWalker(detachedProcessingInstruction, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedProcessingInstruction, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedProcessingInstruction, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(comment, 0, null) 
-FAIL document.createTreeWalker(comment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(comment, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(comment, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(comment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(comment, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(comment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(comment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(comment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(comment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(comment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedComment, 0, null) 
-FAIL document.createTreeWalker(detachedComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedComment, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedComment, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedComment, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(docfrag, 0, null) 
-FAIL document.createTreeWalker(docfrag, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(docfrag, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(docfrag, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(docfrag, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(docfrag, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(docfrag, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(docfrag, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(docfrag, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(docfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(docfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(doctype, 0, null) 
-FAIL document.createTreeWalker(doctype, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(doctype, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(doctype, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(doctype, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(doctype, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(doctype, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(doctype, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(doctype, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(doctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(doctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoctype, 0, null) 
-FAIL document.createTreeWalker(foreignDoctype, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoctype, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoctype, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1], 0, null) 
-FAIL document.createTreeWalker(paras[1], 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1], 0, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1], 0, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1], 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1], 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(paras[1], 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1], 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1], 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1], 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(paras[1], NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2, 0, null) 
-FAIL document.createTreeWalker(detachedPara2, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedPara2, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2.firstChild, 0, null) 
-FAIL document.createTreeWalker(detachedPara2.firstChild, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2.firstChild, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedPara2.firstChild, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(testDiv, 0, null) 
-FAIL document.createTreeWalker(testDiv, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(testDiv, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(testDiv, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(testDiv, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(testDiv, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return false })) 
+FAIL document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node "Ijklmnop
+" but got Comment node <!--Alphabet soup?-->
 PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlElement, 0, null) 
-FAIL document.createTreeWalker(detachedXmlElement, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlElement, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlElement, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlElement, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlElement, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlElement, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignTextNode, 0, null) 
-FAIL document.createTreeWalker(detachedForeignTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignTextNode, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignTextNode, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlTextNode, 0, null) 
-FAIL document.createTreeWalker(xmlTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlTextNode, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlTextNode, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlTextNode, 0, null) 
-FAIL document.createTreeWalker(detachedXmlTextNode, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlTextNode, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlTextNode, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlTextNode, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlTextNode, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlTextNode, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlComment, 0, null) 
-FAIL document.createTreeWalker(xmlComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlComment, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlComment, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlComment, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(xmlComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignComment, 0, null) 
-FAIL document.createTreeWalker(foreignComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignComment, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignComment, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignComment, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignComment, 0, null) 
-FAIL document.createTreeWalker(detachedForeignComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignComment, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignComment, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedForeignComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlComment, 0, null) 
-FAIL document.createTreeWalker(detachedXmlComment, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlComment, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlComment, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlComment, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlComment, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(detachedXmlComment, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDocfrag, 0, null) 
-FAIL document.createTreeWalker(foreignDocfrag, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDocfrag, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDocfrag, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(foreignDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDocfrag, 0, null) 
-FAIL document.createTreeWalker(xmlDocfrag, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDocfrag, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDocfrag, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDocfrag, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDocfrag, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDocfrag, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoctype, 0, null) 
-FAIL document.createTreeWalker(xmlDoctype, 0, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, 0, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoctype, 0, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoctype, 0, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoctype, 0, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, null) 
-FAIL document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoctype, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, null) 
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, null) 
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ATTRIBUTE, (function(node) { return node.nodeName[0] == '#' })) 
 PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, null) 
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) assert_equals: .filter expected (function) function "function (node) { return true }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) assert_equals: .filter expected (function) function "function (node) { return false }" but got (object) object "[object NodeFilter]"
-FAIL document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .filter expected (function) function "function (node) { return node.nodeName[0] == '#' }" but got (object) object "[object NodeFilter]"
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return true })) 
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return false })) 
+PASS document.createTreeWalker(xmlDoctype, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT, (function(node) { return node.nodeName[0] == '#' })) 
 
index c67b22b..35b54c6 100644 (file)
@@ -11,7 +11,7 @@ function test() {
     textnode2.nodeValue = "";
     
     var root = document.body;
-    var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, NodeFilter.FILTER_ACCEPT, false);
+    var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, null, false);
 
     var n = it.nextNode();
     while(n) {
@@ -28,4 +28,4 @@ function test() {
 <p>A crash would occur on iteration over a node containing such a run.  NodeIterators, the innerText property, and hovering over a link all use iteration.</p>
 <p>This tests iteration using both the innerText property and NodeIterators.  It is successful if it doesn't crash Safari.</p>
 <hr>
-<a href="#" id="node">hello</a></body></html>
\ No newline at end of file
+<a href="#" id="node">hello</a></body></html>
index 4745038..3abb1ec 100644 (file)
@@ -1160,7 +1160,6 @@ set(WebCore_SOURCES
     bindings/js/JSNamedNodeMapCustom.cpp
     bindings/js/JSNavigatorCustom.cpp
     bindings/js/JSNodeCustom.cpp
-    bindings/js/JSNodeFilterCondition.cpp
     bindings/js/JSNodeFilterCustom.cpp
     bindings/js/JSNodeIteratorCustom.cpp
     bindings/js/JSNodeOrString.cpp
@@ -1435,8 +1434,8 @@ set(WebCore_SOURCES
     dom/NameNodeList.cpp
     dom/NamedFlowCollection.cpp
     dom/NamedNodeMap.cpp
+    dom/NativeNodeFilter.cpp
     dom/Node.cpp
-    dom/NodeFilter.cpp
     dom/NodeFilterCondition.cpp
     dom/NodeIterator.cpp
     dom/NodeOrString.cpp
index 920948d..f2d6e5f 100644 (file)
@@ -1,5 +1,147 @@
 2015-09-01  Chris Dumez  <cdumez@apple.com>
 
+        NodeFilter should be a callback interface
+        https://bugs.webkit.org/show_bug.cgi?id=148415
+
+        Reviewed by Geoffrey Garen.
+
+        NodeFilter is now a callback interface, instead of a regular interface,
+        as per the DOM specification:
+        https://dom.spec.whatwg.org/#interface-nodefilter
+
+        One major difference is that TreeWalker.filter / NodeIterator is
+        supposed to be a Function / Object (passed by JavaScript), but it was a
+        JSNodeFilter wrapper in WebKit. Also, window.NodeFilter is not supposed
+        to have a prototype property.
+
+        This behavior is consistent with Firefox. However, Chrome still has its
+        own NodeFilter wrapper.
+
+        Tests:
+        http/tests/w3c/dom/traversal/NodeIterator-expected.html (rebaselined)
+        http/tests/w3c/dom/traversal/TreeWalker.html (rebaselined)
+
+        * CMakeLists.txt:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+        Add / Remove files to the project files.
+
+        * dom/NodeFilterCondition.cpp:
+        (WebCore::NodeFilterCondition::acceptNode):
+        * dom/NodeFilterCondition.h:
+        * bindings/gobject/GObjectNodeFilterCondition.cpp:
+        (WebCore::GObjectNodeFilterCondition::acceptNode):
+        * bindings/gobject/GObjectNodeFilterCondition.h:
+        * bindings/objc/ObjCNodeFilterCondition.h:
+        * bindings/objc/ObjCNodeFilterCondition.mm:
+        (WebCore::ObjCNodeFilterCondition::acceptNode):
+        Drop ExecState parameter as it is not used.
+
+        * bindings/gobject/WebKitDOMNodeFilter.cpp:
+        (WebKit::core):
+        Use NativeNodeFilter type instead of NodeFilter. NodeFilter is now
+        a pure interface with 2 subclasses: NativeNodeFilter for the native
+        bindings and JSNodeFilter for the JS bindings.
+
+        * bindings/js/JSBindingsAllInOne.cpp:
+        Drop JSNodeFilterCondition.cpp as it was removed.
+
+        * bindings/js/JSCallbackData.cpp:
+        (WebCore::JSCallbackData::invokeCallback):
+        Throw a TypeError if the callback object being invoked is not callable
+        and does not have a callable property with the expected name. There
+        are several layout tests covering this (including w3c ones). Previously,
+        NodeFilter was not using the generic JSCallbackData and the exception
+        throwing was in JSNodeFilterCondition::acceptNode() instead.
+
+        * bindings/js/JSNodeFilterCondition.cpp: Removed.
+        * bindings/js/JSNodeFilterCondition.h: Removed.
+        Drop this class. JSNodeFilter / JSNodeFilterCustom now basically take
+        care of all this.
+
+        * bindings/js/JSNodeFilterCustom.cpp:
+        (WebCore::JSNodeFilter::acceptNode):
+        Complete rewrite. This file is now only used to provide a custom
+        implementation for JSNodeFilter::acceptNode(). The code is similar to
+        what was previously done in JSNodeFilterCondition::acceptNode().
+        There are several reasons we need custom bindings here:
+        - The bindings generator does not handle yet callback functions
+          returning anything else than a boolean.
+        - The specification clearly states that we need to rethrow exceptions
+          thrown by the callback function. However, the default behavior of
+          our bindings is to simply report the exception.
+
+        * bindings/scripts/CodeGeneratorGObject.pm:
+        Only skip functions that have parameters that are callback *functions*,
+        not callback *interfaces*. Callback interfaces are very similar to
+        interfaces and the generator is able to handle them. This change was
+        needed for the GTK bindings generator would no longer generate bindings
+        for Document.createNodeIterator() / Document.createTreeWalker(), now
+        that NodeFilter is a callback interface instead of a regular interface.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateCallbackHeader):
+        (GenerateCallbackImplementation):
+        Generate a toJS() function for callback interfaces as well. Previously,
+        we would only generate those for regular interfaces. This is needed
+        because NodeFilter is now a callback interface and it is exposed to
+        JS via NodeIterator.filter / TreeWalker.filter. The implementation
+        merely returns the callback object / function inside the JSCalbackData
+        so the JS gets back the object / function it passed in.
+
+        * bindings/scripts/CodeGeneratorObjC.pm:
+        Tweak the ObjC bindings generator to use NativeNodeFilter class instead
+        of NodeFilter as NodeFilter is now a pure interfaces. Native bindings
+        are now expected to use the NativeNodeFilter subclass instead.
+
+        * bindings/scripts/test/JS/JSTestCallback.cpp:
+        * bindings/scripts/test/JS/JSTestCallback.h:
+        * bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
+        * bindings/scripts/test/JS/JSTestCallbackFunction.h:
+        Rebaseline bindings tests now that we generate toJS() functions for
+        callback functions / interfaces.
+
+        * dom/DOMAllInOne.cpp:
+        Drop NodeFilter.cpp as it was removed.
+
+        * dom/NativeNodeFilter.cpp: Added.
+        * dom/NativeNodeFilter.h: Added.
+        Introduce new NativeNodeFilter class which subclasses the NodeFilter
+        interface and is used by native bindings. Its accept() implementation
+        uses NodeFilterCondition object internally to filter the nodes instead
+        of a JS callback.
+
+        * dom/NodeFilter.cpp: Removed.
+        * dom/NodeFilter.h:
+        Make NodeFilter a pure interface. Its previous code is now either in
+        NativeNodeFilter of JSNodeFilter.
+
+        * dom/NodeFilter.idl:
+        Make NodeFilter a callback interface instead of a regular interface,
+        as per the DOM specification. Also have its accept() operation return
+        an unsigned short instead of a short to match the specification.
+        The ObjC version still returns a short though for backward
+        compatibility.
+
+        * dom/NodeFilterCondition.cpp:
+        (WebCore::NodeFilterCondition::acceptNode):
+        * dom/NodeFilterCondition.h:
+
+        * dom/NodeIterator.cpp:
+        * dom/NodeIterator.h:
+        * dom/NodeIterator.idl:
+        * dom/Traversal.cpp:
+        * dom/Traversal.h:
+        * dom/TreeWalker.cpp:
+        * dom/TreeWalker.h:
+        * dom/TreeWalker.idl:
+        Stop passing ExecState to TreeWalker / NodeIterator functions. It no
+        longer seems to be needed as we now use the JSCallbackData abstraction
+        for invoking JS.
+
+2015-09-01  Chris Dumez  <cdumez@apple.com>
+
         Range.insersectsNode(node) is supposed to return true if node.parent is null
         https://bugs.webkit.org/show_bug.cgi?id=148687
 
index 4379860..066c3ae 100644 (file)
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     </ClCompile>
-    <ClCompile Include="..\dom\NodeFilter.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\dom\NodeFilterCondition.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     </ClCompile>
-    <ClCompile Include="..\bindings\js\JSNodeFilterCondition.cpp">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\bindings\js\JSNodeFilterCustom.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     <ClInclude Include="..\bindings\js\JSMutationCallback.h" />
     <ClInclude Include="..\bindings\js\JSNodeCustom.h" />
     <ClInclude Include="..\bindings\js\JSNodeOrString.h" />
-    <ClInclude Include="..\bindings\js\JSNodeFilterCondition.h" />
     <ClInclude Include="..\bindings\js\JSPluginElementFunctions.h" />
     <ClInclude Include="..\bindings\js\JSWorkerGlobalScopeBase.h" />
     <ClInclude Include="..\bindings\js\ScheduledAction.h" />
index a23cd62..dd9b2da 100644 (file)
     <ClCompile Include="..\bindings\js\JSNodeCustom.cpp">
       <Filter>bindings\js</Filter>
     </ClCompile>
-    <ClCompile Include="..\bindings\js\JSNodeFilterCondition.cpp">
-      <Filter>bindings\js</Filter>
-    </ClCompile>
     <ClCompile Include="..\bindings\js\JSNodeFilterCustom.cpp">
       <Filter>bindings\js</Filter>
     </ClCompile>
     <ClInclude Include="..\bindings\js\JSNodeCustom.h">
       <Filter>bindings\js</Filter>
     </ClInclude>
-    <ClInclude Include="..\bindings\js\JSNodeFilterCondition.h">
-      <Filter>bindings\js</Filter>
-    </ClInclude>
     <ClInclude Include="..\bindings\js\JSPluginElementFunctions.h">
       <Filter>bindings\js</Filter>
     </ClInclude>
index 9581ae0..b67571b 100644 (file)
                830030F51B7D33B500ED3AAC /* GenericCachedHTMLCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 830030F31B7D33A600ED3AAC /* GenericCachedHTMLCollection.cpp */; };
                830030F61B7D33B500ED3AAC /* GenericCachedHTMLCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 830030F41B7D33A600ED3AAC /* GenericCachedHTMLCollection.h */; };
                830030F81B7D3B7800ED3AAC /* CachedHTMLCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 830030F71B7D398800ED3AAC /* CachedHTMLCollection.h */; };
+               8306EFF11B8BCEA50031D032 /* NativeNodeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8306EFF01B8BCE7C0031D032 /* NativeNodeFilter.cpp */; };
                832B843419D8E55100B26055 /* SVGAnimateElementBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 832B843319D8E55100B26055 /* SVGAnimateElementBase.h */; };
                832B843619D8E57400B26055 /* SVGAnimateElementBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 832B843519D8E57400B26055 /* SVGAnimateElementBase.cpp */; };
                8348BFAB1B85729800912F36 /* ClassCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8348BFA91B85729500912F36 /* ClassCollection.cpp */; };
                8386A97019F61E4F00E1EC4A /* StyleBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8386A96E19F61E4F00E1EC4A /* StyleBuilder.cpp */; };
                839AAFEC1A0C0C8D00605F99 /* HTMLWBRElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 839AAFEA1A0C0C8D00605F99 /* HTMLWBRElement.cpp */; };
                839AAFED1A0C0C8D00605F99 /* HTMLWBRElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 839AAFEB1A0C0C8D00605F99 /* HTMLWBRElement.h */; };
+               83B2D1751B8BCD6A00A02E47 /* NativeNodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E959E11B8BC22B004D9385 /* NativeNodeFilter.h */; };
                83B9687B19F8AB83004EF7AF /* StyleBuilderConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B9687919F8AB83004EF7AF /* StyleBuilderConverter.h */; };
                83C05A5A1A686212007E5DEA /* StylePropertyShorthandFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83C05A581A686212007E5DEA /* StylePropertyShorthandFunctions.cpp */; };
                83C05A5B1A686212007E5DEA /* StylePropertyShorthandFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C05A591A686212007E5DEA /* StylePropertyShorthandFunctions.h */; };
                83C1D434178D5AB500141E68 /* SVGPathSegLinetoVerticalRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D422178D5AB400141E68 /* SVGPathSegLinetoVerticalRel.h */; };
                83C1D435178D5AB500141E68 /* SVGPathSegMovetoAbs.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D423178D5AB400141E68 /* SVGPathSegMovetoAbs.h */; };
                83C1D436178D5AB500141E68 /* SVGPathSegMovetoRel.h in Headers */ = {isa = PBXBuildFile; fileRef = 83C1D424178D5AB400141E68 /* SVGPathSegMovetoRel.h */; };
+               83F1206B1B8C104700D75F63 /* JSNodeFilterCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83F1206A1B8C103600D75F63 /* JSNodeFilterCustom.cpp */; };
                8419D2A7120D92D000141F8F /* SVGPathByteStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 8419D2A4120D92D000141F8F /* SVGPathByteStream.h */; };
                8419D2A8120D92D000141F8F /* SVGPathByteStreamBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8419D2A5120D92D000141F8F /* SVGPathByteStreamBuilder.cpp */; };
                8419D2A9120D92D000141F8F /* SVGPathByteStreamBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8419D2A6120D92D000141F8F /* SVGPathByteStreamBuilder.h */; };
                8542A7980AE5C94300DF58DF /* JSSVGNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8574D1F30ADE6122004CBA11 /* JSSVGNumber.cpp */; };
                8542A7990AE5C94400DF58DF /* JSSVGElementWrapperFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8574D1F20ADE6122004CBA11 /* JSSVGElementWrapperFactory.h */; };
                8542A79A0AE5C94400DF58DF /* JSSVGElementWrapperFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8574D1F10ADE6122004CBA11 /* JSSVGElementWrapperFactory.cpp */; };
-               854FE7300A2297BE0058D7AD /* NodeFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE7260A2297BE0058D7AD /* NodeFilter.cpp */; };
                854FE7310A2297BE0058D7AD /* NodeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE7270A2297BE0058D7AD /* NodeFilter.h */; };
                854FE7320A2297BE0058D7AD /* NodeFilterCondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 854FE7280A2297BE0058D7AD /* NodeFilterCondition.cpp */; };
                854FE7330A2297BE0058D7AD /* NodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = 854FE7290A2297BE0058D7AD /* NodeFilterCondition.h */; };
                BCB16C280979C3BD00467741 /* CachedXSLStyleSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */; };
                BCB16C290979C3BD00467741 /* CachedResourceLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */; };
                BCB16C2A0979C3BD00467741 /* CachedResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB16C110979C3BD00467741 /* CachedResourceLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               BCB773610C17853D00132BA4 /* JSNodeFilterCondition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB7735E0C17853D00132BA4 /* JSNodeFilterCondition.cpp */; };
-               BCB773620C17853D00132BA4 /* JSNodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB7735F0C17853D00132BA4 /* JSNodeFilterCondition.h */; };
-               BCB773630C17853D00132BA4 /* JSNodeFilterCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */; };
                BCB92D4F1293550B00C8387F /* FontBaseline.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB92D4E1293550B00C8387F /* FontBaseline.h */; settings = {ATTRIBUTES = (Private, ); }; };
                BCBB8AB913F1AFB000734DF0 /* PODInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB513F1AFB000734DF0 /* PODInterval.h */; settings = {ATTRIBUTES = (Private, ); }; };
                BCBB8ABA13F1AFB000734DF0 /* PODIntervalTree.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */; settings = {ATTRIBUTES = (Private, ); }; };
                830030F31B7D33A600ED3AAC /* GenericCachedHTMLCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GenericCachedHTMLCollection.cpp; sourceTree = "<group>"; };
                830030F41B7D33A600ED3AAC /* GenericCachedHTMLCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericCachedHTMLCollection.h; sourceTree = "<group>"; };
                830030F71B7D398800ED3AAC /* CachedHTMLCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedHTMLCollection.h; sourceTree = "<group>"; };
+               8306EFF01B8BCE7C0031D032 /* NativeNodeFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeNodeFilter.cpp; sourceTree = "<group>"; };
                832B843319D8E55100B26055 /* SVGAnimateElementBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimateElementBase.h; sourceTree = "<group>"; };
                832B843519D8E57400B26055 /* SVGAnimateElementBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimateElementBase.cpp; sourceTree = "<group>"; };
                8348BFA91B85729500912F36 /* ClassCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClassCollection.cpp; sourceTree = "<group>"; };
                83C1D424178D5AB400141E68 /* SVGPathSegMovetoRel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathSegMovetoRel.h; sourceTree = "<group>"; };
                83D26D3C1AFDCC50001B3873 /* ChildNode.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChildNode.idl; sourceTree = "<group>"; };
                83D26D3D1AFDCC50001B3873 /* ParentNode.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = ParentNode.idl; sourceTree = "<group>"; };
+               83E959E11B8BC22B004D9385 /* NativeNodeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeNodeFilter.h; sourceTree = "<group>"; };
+               83F1206A1B8C103600D75F63 /* JSNodeFilterCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeFilterCustom.cpp; sourceTree = "<group>"; };
                8419D2A4120D92D000141F8F /* SVGPathByteStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathByteStream.h; sourceTree = "<group>"; };
                8419D2A5120D92D000141F8F /* SVGPathByteStreamBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathByteStreamBuilder.cpp; sourceTree = "<group>"; };
                8419D2A6120D92D000141F8F /* SVGPathByteStreamBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPathByteStreamBuilder.h; sourceTree = "<group>"; };
                854075660AD6CBF900620C57 /* DOMHTMLOptionElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptionElement.h; sourceTree = "<group>"; };
                854075670AD6CBF900620C57 /* DOMHTMLOptionElement.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLOptionElement.mm; sourceTree = "<group>"; };
                854075680AD6CBF900620C57 /* DOMHTMLOptionElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMHTMLOptionElementInternal.h; sourceTree = "<group>"; };
-               854FE7260A2297BE0058D7AD /* NodeFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NodeFilter.cpp; sourceTree = "<group>"; };
                854FE7270A2297BE0058D7AD /* NodeFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NodeFilter.h; sourceTree = "<group>"; };
                854FE7280A2297BE0058D7AD /* NodeFilterCondition.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NodeFilterCondition.cpp; sourceTree = "<group>"; };
                854FE7290A2297BE0058D7AD /* NodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NodeFilterCondition.h; sourceTree = "<group>"; };
                BCB16C0F0979C3BD00467741 /* CachedXSLStyleSheet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedXSLStyleSheet.h; sourceTree = "<group>"; };
                BCB16C100979C3BD00467741 /* CachedResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CachedResourceLoader.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
                BCB16C110979C3BD00467741 /* CachedResourceLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CachedResourceLoader.h; sourceTree = "<group>"; };
-               BCB7735E0C17853D00132BA4 /* JSNodeFilterCondition.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeFilterCondition.cpp; sourceTree = "<group>"; };
-               BCB7735F0C17853D00132BA4 /* JSNodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSNodeFilterCondition.h; sourceTree = "<group>"; };
-               BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeFilterCustom.cpp; sourceTree = "<group>"; };
                BCB92D4E1293550B00C8387F /* FontBaseline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontBaseline.h; sourceTree = "<group>"; };
                BCBB8AB513F1AFB000734DF0 /* PODInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODInterval.h; sourceTree = "<group>"; };
                BCBB8AB613F1AFB000734DF0 /* PODIntervalTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PODIntervalTree.h; sourceTree = "<group>"; };
                                BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */,
                                BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */,
                                65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */,
+                               83F1206A1B8C103600D75F63 /* JSNodeFilterCustom.cpp */,
                                7C91A38D1B498ABE003F9EFA /* JSNodeOrString.cpp */,
                                7C91A38E1B498ABE003F9EFA /* JSNodeOrString.h */,
                                F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */,
                                073794E719EE335C00E5A045 /* JSNavigatorCustom.cpp */,
                                BCD9C2600C17AA67005C90A2 /* JSNodeCustom.cpp */,
                                BC9439C2116CF4940048C750 /* JSNodeCustom.h */,
-                               BCB773600C17853D00132BA4 /* JSNodeFilterCustom.cpp */,
                                1A750DD30A90E729000FF215 /* JSNodeIteratorCustom.cpp */,
                                BCD9C2610C17AA67005C90A2 /* JSNodeListCustom.cpp */,
                                AD20B18C18E9D216005A8083 /* JSNodeListCustom.h */,
                                93B70D4E09EB0C7C009D8468 /* JSEventListener.h */,
                                935F45400F7C3B5F00D7C1FB /* JSLazyEventListener.cpp */,
                                935F45410F7C3B5F00D7C1FB /* JSLazyEventListener.h */,
-                               BCB7735E0C17853D00132BA4 /* JSNodeFilterCondition.cpp */,
-                               BCB7735F0C17853D00132BA4 /* JSNodeFilterCondition.h */,
                        );
                        name = "Callback Objects";
                        sourceTree = "<group>";
                                85ACA9F90A9B631000671E90 /* NamedNodeMap.idl */,
                                A81872190977D3C0005826D9 /* NameNodeList.cpp */,
                                A81872130977D3C0005826D9 /* NameNodeList.h */,
+                               8306EFF01B8BCE7C0031D032 /* NativeNodeFilter.cpp */,
+                               83E959E11B8BC22B004D9385 /* NativeNodeFilter.h */,
                                A8C4A7EE09D563270003AC8D /* Node.cpp */,
                                14115B5109F84B7100CA4FC1 /* Node.h */,
                                14DC0D0B09FECFA4007B0235 /* Node.idl */,
-                               854FE7260A2297BE0058D7AD /* NodeFilter.cpp */,
                                854FE7270A2297BE0058D7AD /* NodeFilter.h */,
                                14115AF909F847D600CA4FC1 /* NodeFilter.idl */,
                                854FE7280A2297BE0058D7AD /* NodeFilterCondition.cpp */,
                                853BF4DB0ABB6B55008647BB /* DOMNode.h in Headers */,
                                854075260AD6C66700620C57 /* DOMNodeFilter.h in Headers */,
                                85B498FB0ADB340200925CBB /* DOMNodeInternal.h in Headers */,
+                               83B2D1751B8BCD6A00A02E47 /* NativeNodeFilter.h in Headers */,
                                85526C370AB0A17E000302EA /* DOMNodeIterator.h in Headers */,
                                850B41C20AD9E7E700A6ED4F /* DOMNodeIteratorInternal.h in Headers */,
                                85ACAA8D0A9B759C00671E90 /* DOMNodeList.h in Headers */,
                                073BE34D17D17E7A002BD431 /* JSNavigatorUserMediaSuccessCallback.h in Headers */,
                                BC9439C3116CF4940048C750 /* JSNodeCustom.h in Headers */,
                                14115B7309F84CD600CA4FC1 /* JSNodeFilter.h in Headers */,
-                               BCB773620C17853D00132BA4 /* JSNodeFilterCondition.h in Headers */,
                                1A750D8E0A90E521000FF215 /* JSNodeIterator.h in Headers */,
                                BCD9C2C30C17B69E005C90A2 /* JSNodeList.h in Headers */,
                                AD20B18D18E9D237005A8083 /* JSNodeListCustom.h in Headers */,
                                BC2ED6BC0C6BD2F000920BFF /* JSAttrCustom.cpp in Sources */,
                                FDA15E9D12B03EE1003A583A /* JSAudioBuffer.cpp in Sources */,
                                FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */,
+                               83F1206B1B8C104700D75F63 /* JSNodeFilterCustom.cpp in Sources */,
                                FDA15E9F12B03EE1003A583A /* JSAudioBufferSourceNode.cpp in Sources */,
                                FDEAAAF312B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp in Sources */,
                                FDA15EA512B03EE1003A583A /* JSAudioContext.cpp in Sources */,
                                511EF2D117F0FDF100E4FA16 /* JSIDBObjectStoreCustom.cpp in Sources */,
                                511EF2C817F0FD3500E4FA16 /* JSIDBOpenDBRequest.cpp in Sources */,
                                511EF2C917F0FD3500E4FA16 /* JSIDBRequest.cpp in Sources */,
+                               8306EFF11B8BCEA50031D032 /* NativeNodeFilter.cpp in Sources */,
                                511EF2CA17F0FD3500E4FA16 /* JSIDBTransaction.cpp in Sources */,
                                511EF2CB17F0FD3500E4FA16 /* JSIDBVersionChangeEvent.cpp in Sources */,
                                BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */,
                                14DC0D3709FED073007B0235 /* JSNode.cpp in Sources */,
                                BCD9C2640C17AA67005C90A2 /* JSNodeCustom.cpp in Sources */,
                                14115B7209F84CD600CA4FC1 /* JSNodeFilter.cpp in Sources */,
-                               BCB773610C17853D00132BA4 /* JSNodeFilterCondition.cpp in Sources */,
-                               BCB773630C17853D00132BA4 /* JSNodeFilterCustom.cpp in Sources */,
                                1A750D8D0A90E521000FF215 /* JSNodeIterator.cpp in Sources */,
                                1A750DD40A90E729000FF215 /* JSNodeIteratorCustom.cpp in Sources */,
                                BCD9C2C20C17B69E005C90A2 /* JSNodeList.cpp in Sources */,
                                267726001A5B3AD9003C24DD /* NFAToDFA.cpp in Sources */,
                                BCEF43E00E674110001C1287 /* NinePieceImage.cpp in Sources */,
                                A8C4A80009D563270003AC8D /* Node.cpp in Sources */,
-                               854FE7300A2297BE0058D7AD /* NodeFilter.cpp in Sources */,
                                854FE7320A2297BE0058D7AD /* NodeFilterCondition.cpp in Sources */,
                                854FE7340A2297BE0058D7AD /* NodeIterator.cpp in Sources */,
                                4FFC022B1643B710004E1638 /* NodeRareData.cpp in Sources */,
index adfd8c1..e0abb7c 100644 (file)
@@ -29,7 +29,7 @@ GObjectNodeFilterCondition::~GObjectNodeFilterCondition()
     g_object_set_data(G_OBJECT(m_filter.get()), "webkit-core-node-filter", nullptr);
 }
 
-short GObjectNodeFilterCondition::acceptNode(JSC::ExecState*, Node* node) const
+short GObjectNodeFilterCondition::acceptNode(Node* node) const
 {
     if (!node)
         return NodeFilter::FILTER_REJECT;
index 6128025..5366a53 100644 (file)
@@ -36,7 +36,7 @@ public:
         return adoptRef(*new GObjectNodeFilterCondition(filter));
     }
 
-    virtual short acceptNode(JSC::ExecState*, Node*) const;
+    virtual short acceptNode(Node*) const override;
 
 private:
     GObjectNodeFilterCondition(WebKitDOMNodeFilter* filter)
index 258fc4a..d80fe70 100644 (file)
@@ -20,7 +20,7 @@
 #include "WebKitDOMNodeFilter.h"
 
 #include "GObjectNodeFilterCondition.h"
-#include "NodeFilter.h"
+#include "NativeNodeFilter.h"
 #include "WebKitDOMNode.h"
 #include "WebKitDOMNodeFilterPrivate.h"
 #include <wtf/HashMap.h>
@@ -72,7 +72,7 @@ RefPtr<WebCore::NodeFilter> core(WebKitDOMNodeFilter* nodeFilter)
 
     RefPtr<WebCore::NodeFilter> coreNodeFilter = static_cast<WebCore::NodeFilter*>(g_object_get_data(G_OBJECT(nodeFilter), "webkit-core-node-filter"));
     if (!coreNodeFilter) {
-        coreNodeFilter = WebCore::NodeFilter::create(WebCore::GObjectNodeFilterCondition::create(nodeFilter));
+        coreNodeFilter = WebCore::NativeNodeFilter::create(WebCore::GObjectNodeFilterCondition::create(nodeFilter));
         nodeFilterMap().add(coreNodeFilter.get(), nodeFilter);
         g_object_weak_ref(G_OBJECT(nodeFilter), nodeFilterObjectDestroyedCallback, coreNodeFilter.get());
         g_object_set_data(G_OBJECT(nodeFilter), "webkit-core-node-filter", coreNodeFilter.get());
index 1b5e95b..b5c5ff2 100644 (file)
 #include "JSMutationObserverCustom.cpp"
 #include "JSNamedNodeMapCustom.cpp"
 #include "JSNodeCustom.cpp"
-#include "JSNodeFilterCondition.cpp"
 #include "JSNodeFilterCustom.cpp"
 #include "JSNodeIteratorCustom.cpp"
 #include "JSNodeListCustom.cpp"
index d98e632..6d40a47 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2007-2009, 2015 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
 #include "JSDOMBinding.h"
 #include "JSMainThreadExecState.h"
 #include "JSMainThreadExecStateInstrumentation.h"
+#include <runtime/Exception.h>
 
 using namespace JSC;
     
 namespace WebCore {
 
-void JSCallbackData::deleteData(void* context)
+JSValue JSCallbackData::invokeCallback(JSObject* callback, MarkedArgumentBuffer& args, CallbackType method, PropertyName functionName, NakedPtr<Exception>& returnedException)
 {
-    delete static_cast<JSCallbackData*>(context);
-}
-
-JSValue JSCallbackData::invokeCallback(MarkedArgumentBuffer& args, CallbackType method, PropertyName functionName, NakedPtr<Exception>& returnedException)
-{
-    ASSERT(callback());
-    return invokeCallback(callback(), args, method, functionName, returnedException);
-}
+    ASSERT(callback);
 
-JSValue JSCallbackData::invokeCallback(JSValue thisValue, MarkedArgumentBuffer& args, CallbackType method, PropertyName functionName, NakedPtr<Exception>& returnedException)
-{
-    ASSERT(callback());
-    ASSERT(globalObject());
+    auto* globalObject = JSC::jsCast<JSDOMGlobalObject*>(callback->globalObject());
+    ASSERT(globalObject);
 
-    ExecState* exec = globalObject()->globalExec();
+    ExecState* exec = globalObject->globalExec();
     JSValue function;
     CallData callData;
     CallType callType = CallTypeNone;
 
     if (method != CallbackType::Object) {
-        function = callback();
-        callType = callback()->methodTable()->getCallData(callback(), callData);
+        function = callback;
+        callType = callback->methodTable()->getCallData(callback, callData);
     }
     if (callType == CallTypeNone) {
-        if (method == CallbackType::Function)
+        if (method == CallbackType::Function) {
+            returnedException = Exception::create(exec->vm(), createTypeError(exec));
             return JSValue();
+        }
 
         ASSERT(!functionName.isNull());
-        function = callback()->get(exec, functionName);
+        function = callback->get(exec, functionName);
         callType = getCallData(function, callData);
-        if (callType == CallTypeNone)
+        if (callType == CallTypeNone) {
+            returnedException = Exception::create(exec->vm(), createTypeError(exec));
             return JSValue();
+        }
     }
 
     ASSERT(!function.isEmpty());
     ASSERT(callType != CallTypeNone);
 
-    ScriptExecutionContext* context = globalObject()->scriptExecutionContext();
+    ScriptExecutionContext* context = globalObject->scriptExecutionContext();
     // We will fail to get the context if the frame has been detached.
     if (!context)
         return JSValue();
@@ -86,12 +82,17 @@ JSValue JSCallbackData::invokeCallback(JSValue thisValue, MarkedArgumentBuffer&
 
     returnedException = nullptr;
     JSValue result = context->isDocument()
-        ? JSMainThreadExecState::call(exec, function, callType, callData, thisValue, args, returnedException)
-        : JSC::call(exec, function, callType, callData, thisValue, args, returnedException);
+        ? JSMainThreadExecState::call(exec, function, callType, callData, callback, args, returnedException)
+        : JSC::call(exec, function, callType, callData, callback, args, returnedException);
 
     InspectorInstrumentation::didCallFunction(cookie, context);
 
     return result;
 }
 
+bool JSCallbackDataWeak::WeakOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, SlotVisitor& visitor)
+{
+    return visitor.containsOpaqueRoot(context);
+}
+
 } // namespace WebCore
index 4ed0807..7acf921 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2007-2009, 2015 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -45,13 +45,12 @@ namespace WebCore {
 
 class JSCallbackData {
 public:
-    static void deleteData(void*);
+    enum class CallbackType { Function, Object, FunctionOrObject };
 
-    JSCallbackData(JSC::JSObject* callback, JSDOMGlobalObject* globalObject)
-        : m_callback(globalObject->vm(), callback)
-        , m_globalObject(globalObject->vm(), globalObject)
+protected:
+    JSCallbackData()
 #ifndef NDEBUG
-        , m_thread(currentThread())
+        : m_thread(currentThread())
 #endif
     {
     }
@@ -62,25 +61,61 @@ public:
         ASSERT(m_thread == currentThread());
 #endif
     }
-
-    JSC::JSObject* callback() { return m_callback.get(); }
-    JSDOMGlobalObject* globalObject() { return m_globalObject.get(); }
     
-    enum class CallbackType { Function, Object, FunctionOrObject };
-    JSC::JSValue invokeCallback(JSC::MarkedArgumentBuffer&, CallbackType, JSC::PropertyName functionName, NakedPtr<JSC::Exception>& returnedException);
-    JSC::JSValue invokeCallback(JSC::JSValue thisValue, JSC::MarkedArgumentBuffer&, CallbackType, JSC::PropertyName functionName, NakedPtr<JSC::Exception>& returnedException);
+    static JSC::JSValue invokeCallback(JSC::JSObject* callback, JSC::MarkedArgumentBuffer&, CallbackType, JSC::PropertyName functionName, NakedPtr<JSC::Exception>& returnedException);
 
 private:
-    JSC::Strong<JSC::JSObject> m_callback;
-    JSC::Strong<JSDOMGlobalObject> m_globalObject;
 #ifndef NDEBUG
     ThreadIdentifier m_thread;
 #endif
 };
 
+class JSCallbackDataStrong : public JSCallbackData {
+public:
+    JSCallbackDataStrong(JSC::JSObject* callback, void*)
+        : m_callback(callback->globalObject()->vm(), callback)
+    {
+    }
+
+    JSC::JSObject* callback() { return m_callback.get(); }
+    JSDOMGlobalObject* globalObject() { return JSC::jsCast<JSDOMGlobalObject*>(m_callback->globalObject()); }
+
+    JSC::JSValue invokeCallback(JSC::MarkedArgumentBuffer& args, CallbackType callbackType, JSC::PropertyName functionName, NakedPtr<JSC::Exception>& returnedException)
+    {
+        return JSCallbackData::invokeCallback(callback(), args, callbackType, functionName, returnedException);
+    }
+
+private:
+    JSC::Strong<JSC::JSObject> m_callback;
+};
+
+class JSCallbackDataWeak : public JSCallbackData {
+public:
+    JSCallbackDataWeak(JSC::JSObject* callback, void* owner)
+        : m_callback(callback, &m_weakOwner, owner)
+    {
+    }
+
+    JSC::JSObject* callback() { return m_callback.get(); }
+    JSDOMGlobalObject* globalObject() { return JSC::jsCast<JSDOMGlobalObject*>(m_callback->globalObject()); }
+
+    JSC::JSValue invokeCallback(JSC::MarkedArgumentBuffer& args, CallbackType callbackType, JSC::PropertyName functionName, NakedPtr<JSC::Exception>& returnedException)
+    {
+        return JSCallbackData::invokeCallback(callback(), args, callbackType, functionName, returnedException);
+    }
+
+private:
+    class WeakOwner : public JSC::WeakHandleOwner {
+        virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&);
+    };
+    WeakOwner m_weakOwner;
+    JSC::Weak<JSC::JSObject> m_callback;
+};
+
 class DeleteCallbackDataTask : public ScriptExecutionContext::Task {
 public:
-    DeleteCallbackDataTask(JSCallbackData* data)
+    template <typename CallbackDataType>
+    explicit DeleteCallbackDataTask(CallbackDataType* data)
         : ScriptExecutionContext::Task(ScriptExecutionContext::Task::CleanupTask, [data] (ScriptExecutionContext&) {
             delete data;
         })
diff --git a/Source/WebCore/bindings/js/JSNodeFilterCondition.cpp b/Source/WebCore/bindings/js/JSNodeFilterCondition.cpp
deleted file mode 100644 (file)
index 7b4119a..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
- *  Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This library is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this library; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "config.h"
-#include "JSNodeFilterCondition.h"
-
-#include "JSMainThreadExecState.h"
-#include "JSNode.h"
-#include "JSNodeFilter.h"
-#include "NodeFilter.h"
-#include <runtime/Error.h>
-#include <runtime/JSLock.h>
-
-namespace WebCore {
-
-using namespace JSC;
-
-JSNodeFilterCondition::JSNodeFilterCondition(VM&, NodeFilter* owner, JSValue filter)
-    : m_filter(filter.isObject() ? Weak<JSObject>(jsCast<JSObject*>(filter), &m_weakOwner, owner) : nullptr)
-{
-}
-
-short JSNodeFilterCondition::acceptNode(JSC::ExecState* exec, Node* filterNode) const
-{
-    JSLockHolder lock(exec);
-
-    if (!m_filter)
-        return NodeFilter::FILTER_ACCEPT;
-
-    // Exec is null if we've been called from a non-JavaScript language and the document
-    // is no longer able to run JavaScript (e.g., it's disconnected from its frame).
-    if (!exec)
-        return NodeFilter::FILTER_REJECT;
-
-    JSValue filter = m_filter.get();
-    CallData callData;
-    CallType callType = getCallData(filter, callData);
-    if (callType == CallTypeNone) {
-        filter = filter.get(exec, Identifier::fromString(exec, "acceptNode"));
-        callType = getCallData(filter, callData);
-        if (callType == CallTypeNone) {
-            exec->vm().throwException(exec, createTypeError(exec, "NodeFilter object does not have an acceptNode function"));
-            return NodeFilter::FILTER_REJECT;
-        }
-    }
-
-    MarkedArgumentBuffer args;
-    // FIXME: The node should have the prototype chain that came from its document, not
-    // whatever prototype chain might be on the window this filter came from. Bug 27662
-    args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), filterNode));
-    if (exec->hadException())
-        return NodeFilter::FILTER_REJECT;
-
-    JSValue result = JSC::call(exec, filter, callType, callData, m_filter.get(), args);
-    if (exec->hadException())
-        return NodeFilter::FILTER_REJECT;
-
-    int intResult = result.toInt32(exec);
-    if (exec->hadException())
-        return NodeFilter::FILTER_REJECT;
-
-    return intResult;
-}
-
-bool JSNodeFilterCondition::WeakOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, SlotVisitor& visitor)
-{
-    return visitor.containsOpaqueRoot(context);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/bindings/js/JSNodeFilterCondition.h b/Source/WebCore/bindings/js/JSNodeFilterCondition.h
deleted file mode 100644 (file)
index a6a1be3..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
- *  Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
- *
- *  This library is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  This library is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this library; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef JSNodeFilterCondition_h
-#define JSNodeFilterCondition_h
-
-#include "NodeFilterCondition.h"
-#include <heap/Weak.h>
-#include <heap/WeakInlines.h>
-#include <runtime/JSCInlines.h>
-#include <runtime/JSCJSValue.h>
-#include <wtf/PassRefPtr.h>
-
-namespace WebCore {
-
-    class Node;
-    class NodeFilter;
-
-    class JSNodeFilterCondition : public NodeFilterCondition {
-    public:
-        static Ref<JSNodeFilterCondition> create(JSC::VM& vm, NodeFilter* owner, JSC::JSValue filter)
-        {
-            return adoptRef(*new JSNodeFilterCondition(vm, owner, filter));
-        }
-
-    private:
-        JSNodeFilterCondition(JSC::VM&, NodeFilter* owner, JSC::JSValue filter);
-
-        virtual short acceptNode(JSC::ExecState*, Node*) const;
-
-        class WeakOwner : public JSC::WeakHandleOwner {
-            virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&);
-        };
-        WeakOwner m_weakOwner;
-        mutable JSC::Weak<JSC::JSObject> m_filter;
-    };
-
-} // namespace WebCore
-
-#endif // JSNodeFilterCondition_h
index 70533db..5899224 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include "config.h"
 #include "JSNodeFilter.h"
 
-#include "JSNodeFilterCondition.h"
+#include "JSCallbackData.h"
+#include "JSNode.h"
+#include "NodeFilter.h"
 
 namespace WebCore {
 
-void JSNodeFilter::visitAdditionalChildren(JSC::SlotVisitor& visitor)
-{
-    visitor.addOpaqueRoot(&impl());
-}
+using namespace JSC;
 
-RefPtr<NodeFilter> JSNodeFilter::toWrapped(JSC::VM& vm, JSC::JSValue value)
+// FIXME: The bindings generator is currently not able to generate
+// callback function calls if they return something other than a
+// boolean.
+uint16_t JSNodeFilter::acceptNode(Node* node)
 {
-    if (value.inherits(JSNodeFilter::info()))
-        return &JSC::jsCast<JSNodeFilter*>(asObject(value))->impl();
+    Ref<JSNodeFilter> protect(*this);
+
+    JSLockHolder lock(m_data->globalObject()->vm());
+
+    ExecState* exec = m_data->globalObject()->globalExec();
+    MarkedArgumentBuffer args;
+    args.append(toJS(exec, m_data->globalObject(), node));
+    if (exec->hadException())
+        return NodeFilter::FILTER_REJECT;
+
+    NakedPtr<Exception> returnedException;
+    JSValue value = m_data->invokeCallback(args, JSCallbackData::CallbackType::FunctionOrObject, Identifier::fromString(exec, "acceptNode"), returnedException);
+    if (returnedException) {
+        // Rethrow exception.
+        exec->vm().setException(returnedException);
+
+        return NodeFilter::FILTER_REJECT;
+    }
 
-    if (!value.isObject())
-        return nullptr;
+    uint16_t result = toUInt16(exec, value, NormalConversion);
+    if (exec->hadException())
+        return NodeFilter::FILTER_REJECT;
 
-    RefPtr<NodeFilter> result = NodeFilter::create();
-    result->setCondition(JSNodeFilterCondition::create(vm, result.get(), value));
     return result;
 }
 
index 3be1563..6c37761 100644 (file)
@@ -43,7 +43,7 @@ namespace WebCore {
             return adoptRef(*new ObjCNodeFilterCondition(filter));
         }
 
-        virtual short acceptNode(JSC::ExecState*, Node*) const;
+        virtual short acceptNode(Node*) const;
 
     private:
         ObjCNodeFilterCondition(id <DOMNodeFilter> filter)
index 24b5192..984a1aa 100644 (file)
@@ -37,7 +37,7 @@ using namespace JSC;
 
 namespace WebCore {
 
-short ObjCNodeFilterCondition::acceptNode(ExecState*, Node* node) const
+short ObjCNodeFilterCondition::acceptNode(Node* node) const
 {
     if (!node)
         return NodeFilter::FILTER_REJECT;
index be5d065..95fc101 100644 (file)
@@ -305,7 +305,7 @@ sub SkipFunction {
     # sequence<T> parameters, because this code generator doesn't know how to auto-generate
     # MediaQueryListListener or sequence<T>. Skip EventListeners because they are handled elsewhere.
     foreach my $param (@{$function->parameters}) {
-        if ($codeGenerator->IsCallbackInterface($param->type) ||
+        if ($codeGenerator->IsFunctionOnlyCallbackInterface($param->type) ||
             $param->extendedAttributes->{"Clamp"} ||
             $param->type eq "MediaQueryListListener" ||
             $param->type eq "EventListener" ||
index e9e7450..bf134b3 100644 (file)
@@ -191,6 +191,13 @@ sub GetCallbackClassName
     return "JS$className";
 }
 
+sub GetJSCallbackDataType
+{
+    my $callbackInterface = shift;
+
+    return $callbackInterface->extendedAttributes->{"IsWeakCallback"} ? "JSCallbackDataWeak" : "JSCallbackDataStrong";
+}
+
 sub AddIncludesForTypeInImpl
 {
     my $type = shift;
@@ -3475,6 +3482,8 @@ sub GenerateCallbackHeader
     # Destructor
     push(@headerContent, "    virtual ~$className();\n");
 
+    push(@headerContent, "    " . GetJSCallbackDataType($interface) . "* callbackData() { return m_data; }\n");
+
     # Constructor object getter.
     if (@{$interface->constants}) {
         push(@headerContent, "    static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);\n");
@@ -3513,9 +3522,13 @@ sub GenerateCallbackHeader
     push(@headerContent, "    $className(JSC::JSObject* callback, JSDOMGlobalObject*);\n\n");
 
     # Private members
-    push(@headerContent, "    JSCallbackData* m_data;\n");
+    push(@headerContent, "    " . GetJSCallbackDataType($interface) . "* m_data;\n");
     push(@headerContent, "};\n\n");
 
+    # toJS().
+    push(@headerContent, "JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $interfaceName*);\n");
+    push(@headerContent, "inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, $interfaceName& impl) { return toJS(exec, globalObject, &impl); }\n\n");
+
     push(@headerContent, "} // namespace WebCore\n\n");
     my $conditionalString = $codeGenerator->GenerateConditionalString($interface);
     push(@headerContent, "#endif // ${conditionalString}\n\n") if $conditionalString;
@@ -3549,7 +3562,7 @@ sub GenerateCallbackImplementation
         push(@implContent, "    : ${interfaceName}()\n");
     }
     push(@implContent, "    , ActiveDOMCallback(globalObject->scriptExecutionContext())\n");
-    push(@implContent, "    , m_data(new JSCallbackData(callback, globalObject))\n");
+    push(@implContent, "    , m_data(new " . GetJSCallbackDataType($interface) . "(callback, this))\n");
     push(@implContent, "{\n");
     push(@implContent, "}\n\n");
 
@@ -3564,7 +3577,7 @@ sub GenerateCallbackImplementation
     push(@implContent, "    else\n");
     push(@implContent, "        context->postTask(DeleteCallbackDataTask(m_data));\n");
     push(@implContent, "#ifndef NDEBUG\n");
-    push(@implContent, "    m_data = 0;\n");
+    push(@implContent, "    m_data = nullptr;\n");
     push(@implContent, "#endif\n");
     push(@implContent, "}\n\n");
 
@@ -3689,6 +3702,14 @@ sub GenerateCallbackImplementation
         }
     }
 
+    # toJS() implementation.
+    push(@implContent, "\nJSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, $interfaceName* impl)\n");
+    push(@implContent, "{\n");
+    push(@implContent, "    if (!impl || !static_cast<${className}&>(*impl).callbackData())\n");
+    push(@implContent, "        return jsNull();\n\n");
+    push(@implContent, "    return static_cast<${className}&>(*impl).callbackData()->callback();\n\n");
+    push(@implContent, "}\n");
+
     push(@implContent, "\n}\n");
     my $conditionalString = $codeGenerator->GenerateConditionalString($interface);
     push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString;
index c5b8779..635d133 100644 (file)
@@ -420,6 +420,7 @@ sub GetImplClassName
 {
     my $name = shift;
 
+    return "NativeNodeFilter" if $name eq "NodeFilter";
     return "DOMWindow" if $name eq "AbstractView";
     return $name;
 }
@@ -693,7 +694,7 @@ sub AddIncludesForType
     }
 
     if ($type eq "NodeFilter") {
-        $implIncludes{"NodeFilter.h"} = 1;
+        $implIncludes{"NativeNodeFilter.h"} = 1;
         $implIncludes{"ObjCNodeFilterCondition.h"} = 1;
         return;
     }
@@ -1557,7 +1558,7 @@ sub GenerateImplementation
                 my $paramName = $needsCustom{"NodeFilter"};
                 push(@functionContent, "    RefPtr<WebCore::NodeFilter> nativeNodeFilter;\n");
                 push(@functionContent, "    if ($paramName)\n");
-                push(@functionContent, "        nativeNodeFilter = WebCore::NodeFilter::create(WebCore::ObjCNodeFilterCondition::create($paramName));\n");
+                push(@functionContent, "        nativeNodeFilter = WebCore::NativeNodeFilter::create(WebCore::ObjCNodeFilterCondition::create($paramName));\n");
             }
 
             push(@parameterNames, "ec") if $raisesExceptions;
index 16b4a19..e812da3 100644 (file)
@@ -73,6 +73,7 @@ ImplementedAs=*
 InitializedByEventConstructor
 InterfaceName=*
 IsIndex
+IsWeakCallback
 JSCustomDefineOwnProperty
 JSCustomDefineOwnPropertyOnPrototype
 JSCustomFinalize