
PASS Recursive filters need to throw 
PASS document.createTreeWalker(paras[0], 0, null) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
PASS document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return true })) 
PASS document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return false })) 
PASS document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
PASS document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, null) 
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) 
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) 
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) 
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) 
PASS document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return true })) 
PASS document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return false })) 
PASS document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
PASS document.createTreeWalker(detachedDiv, NodeFilter.SHOW_ELEMENT, null) 
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) 
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) 
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) 
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) 
PASS document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return true })) 
PASS document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return false })) 
PASS document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
PASS document.createTreeWalker(foreignDoc, NodeFilter.SHOW_ELEMENT, null) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
PASS document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return true })) 
PASS document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return false })) 
PASS document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
PASS document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, null) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
PASS document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return true })) 
PASS document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return false })) 
PASS document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) 
PASS document.createTreeWalker(testDiv, NodeFilter.SHOW_ELEMENT, null) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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) 
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] == '#' })) 

