
PASS detach() should be a no-op 
PASS createNodeIterator() parameter defaults 
PASS createNodeIterator() with null as arguments 
PASS createNodeIterator() with undefined as arguments 
PASS Propagate exception from filter function 
PASS Recursive filters need to throw 
PASS document.createNodeIterator(paras[0], 0, null) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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] == '#' })) 

